Python 中的日期可以识别时区吗?

Can Dates be Timezone-Aware in Python?

有很多关于确保日期时间是特定时区的答案。例如,您可以确保您的日期时间是 UTC

from datetime import datetime
import pytz

now_utc = datetime.utcnow()

产生:

datetime.datetime(2017, 5, 11, 17, 37, 5, 602054)

您可以使用

让该日期时间知道它的时区(例如断言两个不同的日期时间对象来自同一时区)
now_utc_aware = datetime.now(pytz.utc) 

datetime.datetime(2017, 5, 11, 17, 38, 2, 757587, tzinfo=< UTC>)

但是当我从时区感知日期时间中提取日期时,我似乎失去了时区感知。

now_utc_aware.date()

datetime.date(2017, 5, 11)

有趣的是,there's a SO question 似乎问的正是这个问题,而且具体是关于日期 (datetime.today()),但答案(包括已接受的答案)与日期时间有关。我看到的将时区意识添加到日期时间的代码似乎都会在我的 datetime.date 对象上引发错误。

是否可以为日期对象添加时区感知?

来自the Python docs

class datetime.date
An idealized naive date, ... Attributes: year, month, and day.

没有关于时间或时区的信息。这只是一个约会。

虽然地球上并非所有地方都同时在同一日期(由于时区),但这并不意味着日期本身具有时区意识。

作为现实世界的类比,将日期想象成日历上的一个正方形。不介绍时间就不能开始谈论时区,时间是用时钟而不是日历来衡量的。