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

Ful*_*ack 4 python datetime date

我在 EST 并尝试使用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。鉴于这种情况,我如何获得今天的日期?请注意,我想保留系统 UTC,同时获取 EST 日期。

MSe*_*ert 5

如果您不介意使用pytz

from datetime import datetime, date
from pytz import timezone

datetime.now(timezone('US/Eastern'))
Run Code Online (Sandbox Code Playgroud)

请注意,python datetime 模块明确建议pytz(但也包含一个“大多数时间”工作的示例):

皮茨

标准库没有 tzinfo 实例,但存在一个第三方库,它将 IANA 时区数据库(也称为 Olson 数据库)引入 Python:pytz。

pytz 包含最新信息,建议使用它。

要将其显式转换为date

date.fromtimestamp(datetime.now(timezone('US/Eastern')).timestamp())
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是 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)
Run Code Online (Sandbox Code Playgroud)