Hyz*_*lay 8 python time datetime
如何让Python显示东部的时间?
我查看了python文档,但这很令人困惑.我正在使用Python 3.
谢谢.
bmb*_*ang 15
当然,有一种更直观的方式:
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)
pytz如果您需要很多时区,并且您需要正确处理夏令时的重复小时(即从午夜到凌晨 1 点发生的情况),您应该使用该软件包。
不过,对于一些简单的事情,创建自己的时区类很容易:
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 小时)以及夏令时生效的时间(btwn 3 月的第二个星期日和11 月的第一个星期日)。
顺便说一句,上面的模板是从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
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)