如何让Python在东部显示时间?
我查看了python文档,但这很令人困惑。我正在使用Python 3.
感谢。
答案 0 :(得分:11)
当然,有一种更直观的方式:
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)
答案 1 :(得分:3)
如果您需要大量时区,则应使用包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月的第2个星期日和11月的第1个星期日)。
顺便说一下,上面的模板是从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
答案 2 :(得分:1)
Pytz库应该是有用的。使用Pytz(支持&gt; 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)
答案 3 :(得分:-1)
如果您需要整个时间戳:
import datetime
print (datetime.datetime.utcnow() - datetime.timedelta(hours=4))
如果您只需要YYYYmmdd格式的日期
print (datetime.datetime.utcnow() - datetime.timedelta(hours=4)).strftime('%Y%m%d')