我在美国东部时间并尝试使用date.today()
,但第二天又回来了。文档说它应该是当地时间。有谁知道如何让它返回我的本地(EST)日期?
classmethod date.today()返回当前的本地日期。这是 相当于date.fromtimestamp(time.time())。
https://docs.python.org/2/library/datetime.html#date-objects
更新:澄清一下,它大部分时间都有效,除非我在美国东部时间晚上10点左右尝试。我用time.strftime('%X %x %Z')
检查了我的时区,它看起来像UTC。鉴于这种情况,我如何得到今天的日期?请注意,我希望在EST中获取日期时保持系统UTC。
答案 0 :(得分:3)
如果您不介意使用pytz
:
from datetime import datetime, date
from pytz import timezone
datetime.now(timezone('US/Eastern'))
请注意,python datetime module明确建议pytz
(但也包含一个“大部分时间都有用”的示例):
pytz
标准库没有tzinfo实例,但是存在第三方库,它将IANA时区数据库(也称为Olson数据库)引入Python:pytz。
pytz包含最新信息,建议使用它。
明确地将其转换为date
:
date.fromtimestamp(datetime.now(timezone('US/Eastern')).timestamp())
或者如果你正在使用python< 3.3(因为datetime.timestamp
是在4年前发布的,所以早期版本可能没有它):
from datetime import timezone as datetime_timezone
now = datetime.now(timezone('US/Eastern'))
ts = (now - datetime(1970, 1, 1, tzinfo=datetime_timezone.utc)).total_seconds()
date.fromtimestamp(ts)