В Python, время, возвращаемое временем(), всегда измеряется с 1 января 1970 года?
Является ли время начала эпохи в Python независимым от платформы (т.е. всегда 1/1/1970)?
Или это зависит от платформы?
Я хочу сериализовать datetime (со второй точностью) на разных машинах, работающих на Python, и иметь возможность читать их на разных платформах, возможно, также используя разные языки программирования (чем Python). Является ли сериализация эпохи хорошей идеей?
Ответы
Ответ 1
В документации говорится:
Чтобы узнать, что такое эпоха, посмотрите gmtime(0)
.
Я бы интерпретировал это как означающее, что никакая конкретная эпоха не гарантируется.
См. также этот поток Python-Dev. Это, похоже, подтверждает мнение о том, что на практике эпоха всегда считается 1970/01/01, но это явно не гарантируется языком.
В результате это, по крайней мере, для Python, вы, вероятно, хорошо используете эпоху, если не имеете дело со странными и неясными платформами. Для чтения с помощью инструментов, отличных от Python, вы, вероятно, тоже в порядке, но чтобы быть уверенным, что вам нужно будет прочитать документацию, предоставляемую этими инструментами.
Ответ 2
Время Epoch (время unix) - стандартный термин:
http://en.wikipedia.org/wiki/Unix_time
Время Unix или время POSIX - это система для описания экземпляров в время, определенное как количество секунд, прошедших с полуночное скоординированное всеобщее время (UTC), 1 января 1970 года, [примечание 1] нет считая секунды прыжка. [примечание 2] Он широко используется в Unix-подобных и многих других операционных систем и форматов файлов. Он не является ни линейным представление времени или истинное представление UTC. [примечание 3] Unix время может быть проверено на некоторых Unix-системах, набрав дату +% s на командной строки
Это означает, что если вы используете эпоху через Python, это будет согласовано между платформами. Ваш лучший выбор для согласованности - использовать UTC во всех случаях.
Ответ 3
time()
всегда будет возвращать время с эпохи, посмотрите документацию.
Обратите внимание, что Epoch всегда количество секунд с 1970 года, но поскольку часы на разных машинах не совпадают, вы можете столкнуться с некоторыми проблемами.
Образец цитирования:
Эпоха - это точка, в которой начинается время. 1 января этого год, в 0 часов, "время с эпохи" равно нулю. Для Unix эпоха - 1970 год. Чтобы узнать, что такое эпоха, посмотрите на gmtime (0).
и
time.time() ¶
Возвращает время в секундах, начиная с эпохи как плавающее номер точки. Обратите внимание, что хотя время всегда возвращается как число с плавающей запятой, не все системы обеспечивают время лучше чем 1 секунда. Хотя эта функция обычно возвращает неубывающие значения, он может вернуть более низкое значение, чем предыдущий вызовите, если системные часы были установлены между двумя вызовами.
(оба из документации Python).
Ответ 4
Эпоха Micropython - 1/1/2000, см. время() и utime.