Как преобразовать дату / время POSIX в ISO и обратно в Python - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь преобразовать произвольные строки даты / времени с помощью модуля 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 Ответ

1 голос
/ 11 июля 2019

Не знаю, может ли это быть полезным, но вернулась отметка времени 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...