Преобразование времени UTC в формат эпохи - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь преобразовать определенное время и дату UTC в секунды с начала эпохи;однако я не смог понять, как это сделать, поскольку я не в часовом поясе UTC.

Я пытался использовать модуль datetime для преобразования даты и времени в секунды с начала эпохи, но на pythonиспользует местное время моей системы, поэтому возвращаемое значение отключено на 7 часов.Я понимаю, что могу просто вычесть 7 * 60, чтобы он работал в моем часовом поясе;тем не менее, мне нужно, чтобы это работало в нескольких часовых поясах без жесткого кодирования изменения времени в моей программе.

Это работает, за исключением того, что используется системное время (MST), но я ищу решение, которое конкретно относится к времени UTC,Обратите внимание, что переменные, определенные здесь, представляют собой пример времени в UTC, которое я пытаюсь преобразовать в секунды с начала эпохи.

import datetime

year=2019
month=5
day=9
hour=21
minute=45

Time=datetime.datetime(year, month, day, hour, minute).timestamp()
print(Time)

Вывод:

1557463500.0

Желаемый вывод (7 часовранее):

1557438300.0

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Вы можете рассчитать временную метку даты эпохи, используя datetime.datetime.utcfromtimestamp(0).timestamp(), а затем вычесть из нее текущую временную метку

import datetime

year=2019
month=5
day=9
hour=21
minute=45

#Date timestamp
dt_timestamp=datetime.datetime(year, month, day, hour, minute).timestamp()

#Epoch timestamp
epoch = datetime.datetime.utcfromtimestamp(0).timestamp()

#Epoch
print(dt_timestamp-epoch)

Вывод будет

1557438300.0
0 голосов
/ 09 мая 2019
import datetime

year=2019
month=5
day=9
hour=21
minute=45

e = datetime.datetime(1970, 1, 1, 0, 0)
t = datetime.datetime(year, month, day, hour, minute)
print((t-e).total_seconds())
...