python datetime.datetime 当前_关于datetime:如何让python显示当前时间(东部)

如何让python在东方显示时间?

我已经看过了Python文档,但它非常混乱。我使用的是python 3。

谢谢。

这可能有帮助:stackoverflow.com/questions/117514/…基本上,在内部使用UTC,并在显示时使用pytz转换为特定时区。

当然,还有一种更直观的方法:

from datetime import datetime

from pytz import timezone

tz = timezone('EST')

datetime.now(tz)

## this returns a datetime object pointing to right now

## according to the timezone info object handed in as the tz variable.

或者,您可以定义自己的datetime对象,并将tz作为tzinfo传递,如下所示:

datetime(2016, 3, 30, 11, 13, 24, tzinfo=tz)

这正是我要找的。不过,我查了上面的(发表评论的日期,我在东海岸)。它显示了以下内容(我猜这是一个日光节约问题):打印日期时间。现在(TZ)---->out[23]:日期时间。日期时间(2016,4,22,12,19,20,281778,TZINFO=)打印日期时间。现在()----->out[24]:日期时间。日期时间(2016,4,22,13,19,58,839327)

使用"US/Eastern"而不是"EST"似乎可以解决这一问题。

虽然您的本地系统可能有一组不同的时区,但不确定什么会导致38分钟的偏移。有关列表,请访问stackoverflow.com/questions/13866926/…

如果您需要很多时区,并且需要正确处理夏令时的重复小时数(即从午夜到凌晨1点发生的情况),则应使用包pytz。

但对于一些简单的事情,创建自己的时区类就足够简单了:

import datetime

class EST5EDT(datetime.tzinfo):

def utcoffset(self, dt):

return datetime.timedelta(hours=-5) + self.dst(dt)

def dst(self, dt):

d = datetime.datetime(dt.year, 3, 8)        #2nd Sunday in March

self.dston = d + datetime.timedelta(days=6-d.weekday())

d = datetime.datetime(dt.year, 11, 1)       #1st Sunday in Nov

self.dstoff = d + datetime.timedelta(days=6-d.weekday())

if self.dston <= dt.replace(tzinfo=None) < self.dstoff:

return datetime.timedelta(hours=1)

else:

return datetime.timedelta(0)

def tzname(self, dt):

return 'EST5EDT'

dt = datetime.datetime.now(tz=EST5EDT())

这里,您使用抽象基类datetime.tzinfo创建一个EST5EDT类,它描述了"东部时区"的含义,即您的UTC偏移量(-5小时),以及夏令时生效的时间(3月2日星期日和11月1日星期日)。

btw上面的模板是从datetime文档中提取的:http://docs.python.org/library/datetime.html网站

不知道"让python在东方显示时间"是什么意思,但使用上面最后一行中的dt对象:

In [15]: print(dt)

2012-07-29 12:28:59.125975-04:00

In [16]: print(dt.strftime('%Y-%m-%d %H:%M:%S'))

2012-07-29 12:28:59

In [17]: print(dt.strftime('%H:%M:%S'))

12:28:59

In [18]: print(dt.strftime('%s.%f'))

1343579339.125975

Pytz图书馆应该是有用的。使用下面代码的pytz(支持>2.3)可以根据东部时区获得时间。

from datetime import datetime, timedelta

from pytz import timezone

import pytz

eastern = timezone('US/Eastern')

fmt = '%Y-%m-%d %H:%M:%S %Z%z'

loc_dt = eastern.localize(datetime(2012, 10, 29, 6, 0, 0))

print loc_dt.strftime(fmt)

我似乎无法安装pytz,它告诉我通过命令行安装,但我不知道如何安装。我尝试了自述文件所说的:c:python32python.exe setup.py install。但它说无效。

可能安装了错误版本的Pytz。你能试着用"easy-install--upgrade-pytz"命令吗?您应该为此安装了安装工具。

我认为安装工具不适用于python 3,我只能找到python 2.x的版本。

[链接]pypi.python.org/pypi/distribute您可以在python 3中使用distribute作为安装工具。

如果需要整个时间戳:

import datetime

print (datetime.datetime.utcnow() - datetime.timedelta(hours=4))

如果您只需要YYMMDD格式的日期

print (datetime.datetime.utcnow() - datetime.timedelta(hours=4)).strftime('%Y%m%d')

这错误地假定东部时区总是与UTC相差4小时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值