将时区 pytz 字符串转换为 python/django 中的偏移量

convert timezone pytz string to offset in python/django

我正在使用 django/python

如何将 'Asia/Kuala_Lumpur' 等 pytz 时区字符串转换为偏移信息('+0800' 或 '80')。

我在这里找不到确切的函数:https://docs.djangoproject.com/en/3.1/topics/i18n/timezones/

我想在 moment.js 中像这样使用它: Format date in a specific timezone

所以问题是: 'Asia/Kuala_Lumpur' --> 转换为 ---> '+0800'

时区不是偏移量。这是一组如何计算给定日期时间的偏移量的规则。这意味着例如关于 夏令时 (DST) 的当前规则,以及对日历进行(小)更改的历史规则。

您可以确定 当前 日期时间(或其他日期时间)的偏移量:

>>> import pytz
>>> from datetime import datetime
>>> pytz.timezone('Asia/Kuala_Lumpur').localize(datetime.utcnow()).strftime('%z')
'+0800'

例如布鲁塞尔时间,两个不同的时间戳可以给出两个不同的偏移量:

>>> tz = pytz.timezone('Europe/Brussels')
>>> tz.localize(datetime.utcnow()).strftime('%z')
'+0100'
>>> tz.localize(datetime(2020,5,1)).strftime('%z')
'+0200'

或者例如平壤在 2018 年 5 月 4 日更改了时区:

>>> pytz.timezone('Asia/Pyongyang').localize(datetime(2018,5,4)).strftime('%z')
'+0830'
>>> pytz.timezone('Asia/Pyongyang').localize(datetime(2018,5,5)).strftime('%z')
'+0900'

因此您不能简单地将时区映射到偏移量上。