将 datetime.datetime 从 UTC 转换为 CEST 一小时以内
Convert datetime.datetime from UTC to CEST one hour to less
如果我 运行 下面的代码我将 datetime.datetime 从 utc 转换为 cest,但它不能正常工作。如果它从 21:29 变为 23:29 是正确的,因为时差是 2 小时
from_zone = tz.gettz('UTC')
to_zone = tz.gettz('CEST')
created_at
Out[302]: datetime.datetime(2020, 1, 30, 21, 29, 34)
utc.replace(tzinfo=from_zone)
Out[303]: datetime.datetime(2020, 1, 30, 21, 29, 34, tzinfo=tzwin('UTC'))
utc.astimezone(to_zone)
Out[304]: datetime.datetime(2020, 1, 30, 22, 29, 34, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600), 'Mitteleuropäische Zeit'))
为了正确定位,请提供 IANA time zone name,例如
to_zone = tz.gettz('Europe/Berlin')
提出@GiacomoCatenazzi 的评论,请注意 IANA 时区(此处:Europe/Berlin)与地理区域相关,而关联的“缩写”(此处:CET/CEST)与偏移量相关一年中某些时期的 UTC。多个地理时区 可以 共享相同的 UTC 偏移量,例如Europe/Berlin 和 Europe/Paris 甚至在 CET 和 CEST 之间变化 simultaneously in 2020。
但是:反过来,它是 1) 模棱两可或 2) 甚至无效:
- 多个地理区域可以有 CEST UTC 偏移量
在某些时候
- 例如 2020-01-01 没有 CEST(尽管世界其他地方的国家当时可能有 UTC+2...)
如果我 运行 下面的代码我将 datetime.datetime 从 utc 转换为 cest,但它不能正常工作。如果它从 21:29 变为 23:29 是正确的,因为时差是 2 小时
from_zone = tz.gettz('UTC')
to_zone = tz.gettz('CEST')
created_at
Out[302]: datetime.datetime(2020, 1, 30, 21, 29, 34)
utc.replace(tzinfo=from_zone)
Out[303]: datetime.datetime(2020, 1, 30, 21, 29, 34, tzinfo=tzwin('UTC'))
utc.astimezone(to_zone)
Out[304]: datetime.datetime(2020, 1, 30, 22, 29, 34, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600), 'Mitteleuropäische Zeit'))
为了正确定位,请提供 IANA time zone name,例如
to_zone = tz.gettz('Europe/Berlin')
提出@GiacomoCatenazzi 的评论,请注意 IANA 时区(此处:Europe/Berlin)与地理区域相关,而关联的“缩写”(此处:CET/CEST)与偏移量相关一年中某些时期的 UTC。多个地理时区 可以 共享相同的 UTC 偏移量,例如Europe/Berlin 和 Europe/Paris 甚至在 CET 和 CEST 之间变化 simultaneously in 2020。
但是:反过来,它是 1) 模棱两可或 2) 甚至无效:
- 多个地理区域可以有 CEST UTC 偏移量 在某些时候
- 例如 2020-01-01 没有 CEST(尽管世界其他地方的国家当时可能有 UTC+2...)