我在一些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的时间处理方式,欢迎大家提出任何想法!
感谢您抽出宝贵时间!
1条答案
按热度按时间e4eetjau1#
你必须使用内置函数替换