Ответ 1
Я бы использовал time.time(), чтобы получить временную метку за считанные секунды с эпохи.
import time
time.time()
Вывод:
1369550494.884832
Для стандартной реализации CPython на большинстве платформ это вернет значение UTC.
Python предоставляет различные пакеты (datetime
, time
, calendar
), как можно видеть здесь, чтобы иметь дело со временем. Я сделал большую ошибку, используя следующее, чтобы получить текущее GMT time.mktime(datetime.datetime.utcnow().timetuple())
Что такое простой способ получить текущее время GMT в отметке времени Unix?
Я бы использовал time.time(), чтобы получить временную метку за считанные секунды с эпохи.
import time
time.time()
Вывод:
1369550494.884832
Для стандартной реализации CPython на большинстве платформ это вернет значение UTC.
import time
int(time.time())
Выход:
1521462189
Помогает ли это?
from datetime import datetime
import calendar
d = datetime.utcnow()
unixtime = calendar.timegm(d.utctimetuple())
print unixtime
Или просто с помощью стандартного модуля datetime
In [2]: from datetime import timezone, datetime
...: int(datetime.now(tz=timezone.utc).timestamp() * 1000)
...:
Out[2]: 1514901741720
Вы можете обрезать или умножить в зависимости от разрешения, которое вы хотите. Этот пример выводит миллис.
Если вам нужна правильная метка времени Unix (в секундах), удалите * 1000
Я нахожу это очень удобным:
from time import time
time()
Мне нравится этот метод:
import datetime, time
dts = datetime.datetime.utcnow()
epochtime = round(time.mktime(dts.timetuple()) + dts.microsecond/1e6)
Другие методы, опубликованные здесь, не гарантируют выдачу UTC на всех платформах или сообщают только о целых секундах. Если вы хотите полное разрешение, это работает, с точностью до микросекунды.
from datetime import datetime as dt
dt.utcnow().strftime("%s")
Выход:
1544524990