我需要确认我收到的字符串格式的日期时间确实在预期的时区内。预期时区是来自pytz.all_timezones
的元素,例如“欧洲/布鲁塞尔”。
我得到的输入格式为2017-03-26T21:12:00+02:00
。我想确认输入的时区是欧洲/布鲁塞尔。
这是我目前使用的,但我不确定它是否是最佳/正确的方式。
import pytz
from dateutil.parser import parse
input_dt = parse(datetime_str)
naive_input = input_dt.replace(tzinfo=None)
tz_expected = pytz.timezone("Europe/Brussels")
# apply the expected timezone to the naive datetime
input_in_expected_tz = tz_expected.localize(naive_input)
utc_offset_of_input = get_offset_from_utc(input_dt)
expected_utc_offset = get_offset_from_utc(input_in_expected_tz)
assert utc_offset_of_input == expected_utc_offset
def get_offset_from_utc(d):
return d.utcoffset().seconds / (60 * 60)
谢谢:)