【发布时间】:2020-10-21 11:29:10
【问题描述】:
我的时区是“澳大利亚/墨尔本”(当我将它提供给我的函数时,我有多个这样的时区)并且我需要像这样的 ASET(GMT +10) 的输出。我怎样才能得到答案?
谢谢
【问题讨论】:
-
如果您有带/不带 DST 的 tz,则 UTC 偏移量将取决于日期/时间。这对您的功能可用吗?
标签: python-3.x datetime timezone pytz
我的时区是“澳大利亚/墨尔本”(当我将它提供给我的函数时,我有多个这样的时区)并且我需要像这样的 ASET(GMT +10) 的输出。我怎样才能得到答案?
谢谢
【问题讨论】:
标签: python-3.x datetime timezone pytz
假设您有可用的日期和时间(请参阅我的评论),最简单的方法可能是strftime:
from datetime import datetime
from dateutil import tz
timezone = tz.gettz("Australia/Melbourne")
dt = datetime.now(timezone)
print(f"{dt.strftime('%Z')}(GMT{dt.strftime('%z')})")
# AEST(GMT+1000)
如果你真的想得到指定的输出,我想你必须更复杂一点:
total_minutes, seconds = divmod(dt.utcoffset().total_seconds(), 60)
hours, minutes = divmod(total_minutes, 60)
utcoff = f"{int(hours):+d}:{int(minutes):02d}" if minutes else f"{int(hours):+d}"
print(f"{dt.strftime('%Z')}(GMT{utcoff})")
# AEST(GMT+10)
【讨论】: