一家特定的银行在世界所有主要城市都有分支机构。它们都在当地时间上午 10:00 开放。如果在使用 DST 的时区内,那么当地的开放时间当然也遵循 DST 调整的时间。那么我如何从本地时间转到UTC时间。
我需要的是这样的功能to_utc(localdt, tz)
:
论据:
- localdt:本地时间,作为天真的日期时间对象,经过 DST 调整
- tz:TZ 格式的时区,例如 'Europe/Berlin'
回报:
- datetime 对象,UTC,时区感知
编辑:
最大的挑战是检测本地时间是否在一个有 DST 的时期,这也意味着它是 DST 调整的。
对于夏季 +1 DST 的“欧洲/柏林”:
- 1 月 1 日 10:00 => 1 月 1 日 9:00 UTC
- 7 月 1 日 10:00 => 7 月 1 日 8:00 UTC
对于没有 DST 的“非洲/拉各斯”:
- 1 月 1 日 10:00 => 1 月 1 日 9:00 UTC
- 7 月 1 日 10:00 => 7 月 1 日 9:00 UTC