python - 如何在python中将时区添加到天真的日期时间实例中

标签 python datetime timezone pytz

我有一个没有时区信息的 datetime。我现在正在获取时区信息并想将时区添加到现有的日期时间实例中,我该怎么做?

d = datetime.datetime.now()
tz = pytz.timezone('Asia/Taipei')

如何将时区信息 tz 添加到 datetime a

最佳答案

使用 tz.localize(d) 对实例进行本地化。来自 documentation :

The first is to use the localize() method provided by the pytz library. This is used to localize a naive datetime (datetime with no timezone information):

>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))
>>> print(loc_dt.strftime(fmt))
2002-10-27 06:00:00 EST-0500

如果您使用tz.localize(),但使用datetime.replace(),那么historical 使用偏移量代替; tz.localize() 将选择对给定日期有效的正确偏移量。例如,美国东部时区 DST 的开始和结束日期随时间而变化。

当您尝试本地化一个不明确的日期时间值时,因为它跨越从夏季到冬季时间的过渡期,反之亦然,时区将被查询以查看生成的日期时间对象是否应该具有 .dst( ) 返回 True 或 False。您可以使用 .localize()is_dst 关键字参数覆盖时区的默认值:

dt = tz.localize(naive, is_dst=True)

甚至通过设置 is_dst=None 完全关闭选择。在这种情况下,或者在极少数情况下, 没有为时区设置默认值,不明确的日期时间值将导致引发 AmbiguousTimeError 异常。 is_dst 标志仅用于不明确的日期时间值,否则将被忽略。

要返回另一种方式,将时区感知对象变回原始对象,请使用 .replace(tzinfo=None):

naivedt = awaredt.replace(tzinfo=None)

关于python - 如何在python中将时区添加到天真的日期时间实例中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13994594/

相关文章:

sql - 如何使用时间戳选择 20 天的 SQL 数据

date - Dart : parse date timezone gives UnimplementedError

javascript - 检查现有日期对象是否为 UTC - Javascript

python - 使用 pandas python 从持续时间和日期时间中每次区分用户

mysql - mysql中的日期排序

ruby-on-rails - 如何将 Rails 时区名称映射到 PostgreSQL?

python - 如何在文件中写入换行符?

javascript - 使用带有 Pandas DF 的 Bootstrap-Table 的 Django 模板

python - 如何在 python 中发送 xml-rpc 请求?

python - 程序导致 OSX (Snow Leopard 10.6.4) 窗口服务器自发崩溃