如何将POSIX日期/时间转换为ISO并在Python中再次转换

时间:2019-07-10 18:56:09

标签: python datetime

我正在尝试使用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。

1 个答案:

答案 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