6

Возвращает ли time.time() в Python локальную или UTC метку времени?

1

Вопрос:

Существует ли разница между временем, возвращаемым функцией <code>time.time()</code> в модуле time на Python, и временем в UTC? Непонятно, возвращает ли данная функция системное время или время в формате UTC. Кто может прояснить этот вопрос? Спасибо!

5 ответ(ов)

3

Это для текстового представления временной метки, которое можно использовать в ваших текстовых файлах. (Название вопроса менялось в прошлом, поэтому вступление к этому ответу было изменено, чтобы прояснить, как это можно интерпретировать как время. [обновлено 2016-01-14])

Вы можете получить временную метку в виде строки, используя методы .now() или .utcnow() из модуля datetime:

>>> import datetime
>>> print(datetime.datetime.utcnow())
2012-12-15 10:14:51.898000

Метод now отличается от utcnow, как и ожидалось — в остальном они работают одинаково:

>>> print(datetime.datetime.now())
2012-12-15 11:15:09.205000

Вы можете явно преобразовать временную метку в строку:

>>> str(datetime.datetime.now())
'2012-12-15 11:15:24.984000'

Либо вы можете задать формат временной метки так, как вам нравится:

>>> datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p")
'Saturday, 15. December 2012 11:19AM'

Если вам нужен ISO-формат, используйте метод .isoformat() объекта:

>>> datetime.datetime.now().isoformat()
'2013-11-18T08:18:31.809000'

Вы можете использовать эти значения в переменных для вычислений и печати без преобразований.

>>> ts = datetime.datetime.now()
>>> tf = datetime.datetime.now()
>>> te = tf - ts
>>> print(ts)
2015-04-21 12:02:19.209915
>>> print(tf)
2015-04-21 12:02:30.449895
>>> print(te)
0:00:11.239980
1

В соответствии с ответом от #squiguy, чтобы получить истинный временной штамп, нужно привести его к целому типу из типа float.

>>> import time
>>> ts = int(time.time())
>>> print(ts)
1389177318

По сути, это и есть суть.

0

Чтобы получить локальную метку времени с использованием библиотеки datetime в Python 3.x, вы можете воспользоваться следующим кодом:

#wanted format: year-month-day hour:minute:seconds

from datetime import datetime

# Получаем текущее время
dt = datetime.now()
# Форматируем его в строку
timeStamp = dt.strftime('%Y-%m-%d %H:%M:%S')

# Выводим на экран
print(timeStamp)

В этом коде мы сначала импортируем класс datetime из модуля datetime. Затем с помощью метода now() получаем текущее локальное время и форматируем его в заданный вид с помощью метода strftime(). Результат выводится на экран.

0

В таком контексте нельзя говорить о "эпохе" в определенном часовом поясе. Эпоха четко определена как конкретный момент времени, и если вы изменяете часовой пояс, то и время само по себе изменяется. В частности, этот момент времени — 1 января 1970 года 00:00:00 UTC. Таким образом, функция time.time() возвращает количество секунд, прошедших с эпохи.

0

Я в итоге выбрал следующий вариант:

>>> import time
>>> time.mktime(time.gmtime())
1509467455.0

Этот код использует модуль time, чтобы получить текущее время в формате UNIX (количество секунд с 1 января 1970 года). Функция time.gmtime() возвращает текущее время в виде структуры времени в формате UTC, а time.mktime() преобразует эту структуру в количество секунд. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать!

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь