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
对象上引发错误。
是否可以为日期对象添加时区感知?
class datetime.date
An idealized naive date, ... Attributes: year, month, and day.
没有关于时间或时区的信息。这只是一个约会。
虽然地球上并非所有地方都同时在同一日期(由于时区),但这并不意味着日期本身具有时区意识。
作为现实世界的类比,将日期想象成日历上的一个正方形。不介绍时间就不能开始谈论时区,时间是用时钟而不是日历来衡量的。
有很多关于确保日期时间是特定时区的答案。例如,您可以确保您的日期时间是 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
对象上引发错误。
是否可以为日期对象添加时区感知?
class datetime.date
An idealized naive date, ... Attributes: year, month, and day.
没有关于时间或时区的信息。这只是一个约会。
虽然地球上并非所有地方都同时在同一日期(由于时区),但这并不意味着日期本身具有时区意识。
作为现实世界的类比,将日期想象成日历上的一个正方形。不介绍时间就不能开始谈论时区,时间是用时钟而不是日历来衡量的。