【发布时间】:2017-08-05 13:06:40
【问题描述】:
请注意,这与this question 不同完全。该问题假定您想要的时间是“现在”,这与任意时间点不同。
我有一个 UTC 感知的日期时间对象,将其命名为 point_in_time(例如 datetime(2017, 3, 12, 16, tzinfo=tz.tzutc()))。
我有一个时区,叫它location(例如'US/Pacific'),因为我关心它在哪里,但是它与 UTC 的时间偏移可能会随着夏令时和什么的。
我想
1) 如果我站在location,请获取point_in_time 的日期,
2) 如果我站在location,则获得该日期的午夜。
===
我尝试简单地使用.astimezone(timezone('US/Pacific')) 然后.replace(hours=0, ...) 移动到午夜,但是您可能会注意到我的示例point_in_time,该日期的午夜位于夏令时开关的另一侧!
结果是我得到了代表 UTC datetime(2017, 3, 12, 7) 的时间,而不是代表 UTC datetime(2017, 3, 12, 8) 的时间,这是真正的午夜。
编辑:
我实际上在想我的问题和相关问题之间的区别在于我正在寻找过去最近的午夜。这个问题的答案似乎可以给出一个午夜,也许是过去或未来?
【问题讨论】:
-
别忘了,并不是每个时区的每一天都有午夜。至少,如果您将午夜定义为
00:00,则不会。例如,2016 年 10 月 16 日在America/Sao_Paulo中,这一天从01:00开始。 Reference here。这比你想象的更常见。世界各地的几个时区在午夜时分切换到 DST 弹簧向前间隙,因此从23:59:59.999变为01:00:00.000。
标签: python datetime timezone timezone-offset pytz