我正在尝试使用Python dateparser
模块转换一些任意的日期/时间字符串。当我省略时区信息时,会发生以下情况:
>>> import dateparser
>>> import time
>>> myctime = time.ctime(1500)
>>> myctime
'Wed Dec 31 16:25:00 1969'
>>> mytime = dateparser.parse(myctime)
>>> mytime
datetime.datetime(1969, 12, 31, 16, 25)
>>> mytime.timestamp()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 22] Invalid argument
解决上述问题的一种方法是,为解析器指定一个时区,如下所示:
>>> mytime = parse(myctime, settings={'TIMEZONE': 'UTC', 'RETURN_AS_TIMEZONE_AWARE': True})
>>> mytime
datetime.datetime(1969, 12, 31, 16, 25, tzinfo=<UTC>)
但是随后我尝试将其转换为时间戳,但我没有得到1500
的初始期望值。
>>> mytime.timestamp()
-27300.0
我在做什么错?显然可以将时间戳转换为其他时区,但是我不希望这样做,而是希望它一直给我提供UTC。
答案 0 :(得分:1)
我不知道这是否有帮助,但是它返回了1500的时间戳。
>>> from datetime import datetime, timezone
>>> t = datetime.utcfromtimestamp(1500)
>>> t
datetime.datetime(1970, 1, 1, 0, 25)
>>> t.replace(tzinfo=timezone.utc).timestamp()
1500.0