Python 3.10 datetime strptime没有选择时区?

f8rj6qna  于 2023-02-01  发布在  Python
关注(0)|答案(1)|浏览(122)

我在一些JSON数据中嵌入了一个字符串形式的时间戳,以便于检查和修改。

"debug_time": 1670238819.9747384,
        "last_saved": "2022-12-05 11:13:39.974725 UTC",

当重新加载时,我需要将它转换回浮点数,以便与time.time()和类似的东西进行比较,然而,我似乎找不到让它恢复正确值的咒语。
在恢复JSON数据时,我尝试通过strptime()将字符串转换为浮点型,如下所示:
loaded_time = datetime.datetime.strptime(obj.last_saved, '%Y-%m-%d %H:%M:%S.%f %Z')
这确实将时间戳恢复为有效的datetime对象,但是调用.tzname()会导致None,并且我尝试使用loaded_time.replace(tzinfo=zoneinfo.ZoneInfo('UTC'))也没有产生任何有用的结果。
简而言之,发出loaded_time.timestamp()会产生1670267619.974725,比它应该产生的时间提前了8个小时,我尝试过使用.astimezone()进行各种排列,但找不到一种方法来正确地将它转换为客户机的本地时间。
我甚至尝试在我自己的时区US/Pacific中硬编码,但它顽固地拒绝给予原始的debug_time值。
这看起来并不是一个困难的问题,但是很明显我误解了python3的时间处理方式,欢迎大家提出任何想法!
感谢您抽出宝贵时间!

e4eetjau

e4eetjau1#

你必须使用内置函数替换

.strftime("%Y-%m-%dT%H:%M:%S.%f%Z").replace("UTC", "")

相关问题