Python date.today()不返回本地日期

时间:2016-12-17 03:34:58

标签: python date datetime

我在美国东部时间并尝试使用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。

1 个答案:

答案 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)