我正在尝试将Unix时间戳转换为AoE时间。我尝试了pytz,但似乎在pytz中没有AoE时间。有什么办法可以做到吗?

tz = pytz.timezone('AOE')
timestamp_aoe = datetime.fromtimestamp(timestamp, tz).isoformat()

最佳答案

AoE时区(Anywhere on Earth; UTC-12)在pytz时区中未定义,参考。 pytz.all_timezones(v2019.3)。

旁注:datetime.fromtimestamp()仅接受一个参数;您稍后必须使用例如,指定结果tzinfo对象的datetimereplace()localize()(有关更多信息,请参见here)。

建议如何处理您的问题

将您的时间戳转换为UTC datetime对象。由于AoE是UTC-12,据我所知,它没有DST,因此您可以

from datetime import datetime, timezone

ts = 1582013600.5 # timestamp from tz 'AoE', UTC-12

# add 43200 seconds to get a UTC timestamp
ts_utcoffset_s = 43200 # 12 h in [s]
# ...and convert to datetime object, adding UTC as tzinfo
dt = datetime.utcfromtimestamp(ts + ts_utcoffset_s).replace(tzinfo=timezone.utc)

print(dt.isoformat())
# 2020-02-18T20:13:20.500000+00:00


由于pytz中没有AoE时区,因此您将无法使用tzinfo = AoE创建可识别时区的datetime对象。您可能得到的只是保存AoE时间但不知道它的天真的datetime对象。我不建议您使用它,因为它可能导致混乱。只要有可能,最好坚持使用UTC。

07-26 04:53