День всегда равен 86400
секундам во времени POSIX.Чтобы получить метку времени POSIX через 3 дня в будущем как число с плавающей запятой (с долей секунды):
import time
DAY = 86400 # seconds
future = time.time() + 3 * DAY
Предполагается, что time.gmtime(0)
- это 1970 (эпоха POSIX).
Если выуже есть наивный объект datetime, который представляет время в местном часовом поясе, тогда временная метка может быть неоднозначной во время переходов DST.Чтобы избежать двусмысленности, вы можете использовать объект datetime с учетом часового пояса или наивный объект datetime, который представляет время в формате UTC.
Чтобы преобразовать локальное значение datetime dt
в секунды с начала эпохи:
from datetime import datetime
from time import mktime
timestamp = dt.timestamp() # Python 3.3+
timestamp = mktime(dt.timetuple()) + dt.microsecond / 1e6 # Python 2.7
Может произойти сбой, если в прошлом местный часовой пояс имел различное смещение utc, а реализация time
не имеет доступа к базе данных часовых поясов в системе.Для обработки таких случаев используйте pytz
.
Чтобы преобразовать дату и время UTC utc_dt
в метку времени POSIX:
timestamp = (utc_dt - datetime(1970, 1, 1)).total_seconds()
Чтобы получить миллисекунды, просто умножьте любое число с плавающей запятой на 1e3..