2015-01-07 2 views
4

Метод time.time() предоставляет вам временную метку, которая в основном является временем, прошедшим с эпохи (которое находится в формате UTC).Как работает метод time.time() python?

В datetime.fromtimestamp() указано, что если параметр tz не указан, возвращается локальный объект datetime.

Я знаю, что информация tz в основном рассматривается как смещение utc, чтобы получить местное время.

Если это так, то текущее время в utc должно быть извлечено с платформы.

Как текущее время дня, будь то локальное или UTC, извлечено из базовой платформы?

+1

Я бы предположил, что это функция ОС ... – thebjorn

+0

@thebjorn И что произойдет, если вручную настроить системные часы? – farthVader

+0

@farthVader Затем функция вернет измененное время. – RPGillespie

ответ

3

В (ток) CPython time.time() называет
floattime(NULL) который называет
_PyTime_gettimeofday_info() который называет
pygettimeofday()
где pygettimeofday() может использовать GetSystemTimeAsFileTime(), clock_gettime(CLOCK_REALTIME), gettimeofday() функции в зависимости от платформы.


Не связано: time.time() returns "seconds since the epoch". Это время POSIX для большинства систем, поддерживаемых Python (Linux, OS X, Windows). POSIX timestamp: не Число истекших секунд SI начиная с 1970-01-01T00:00:00Z (Эпоха). Хотя он очень близок (в пределах 0,000003% от Epoch). Он подсчитывает количество секунд без скачка или секунды UT1 (средне-солнечных) секунд.

UTC не является линейной шкалой времени относительно TAI, шкалы времени GPS (см. the picture). Вы не получите точные истекшие секунды SI из-за скачков секунд (UTC сохраняется в пределах ± 0,9 секунды UT1 (вращение Земли)). См. Также: Is a day always 86,400 epoch seconds long?

Некоторые ОС могут быть настроены так, чтобы использовать «правую» зонуinfo, не поддерживающую POSIX. time.time() не требуется возвращать метку времени POSIX в этом случае. «правый» часовой пояс подсчитывает секунды прыжка, и поэтому разница между «правильными» временными метками и отметками времени POSIX не является постоянной, например, она будет увеличиваться в July 2015 due to the introduction of the positive leap second.

В принципе, «эпоха» может отличаться от эпохи POSIX, хотя Python doesn't support such systems.

Смежные вопросы