6 ответов:
The
time.time()функция возвращает количество секунд с начала эпохи, как секунды. Обратите внимание, что" эпоха " определяется как начало 1 января 1970 года в UTC. Таким образом, эпоха определяется в терминах UTC и устанавливает глобальный момент времени. Независимо от того, где вы находитесь "секунды прошедшей эпохи" (время.time ()) возвращает одно и то же значение в один и тот же момент.вот пример вывода, который я запустил на своем компьютере, преобразуя его в строку как что ж.
Python 2.7.3 (default, Apr 24 2012, 00:00:54) [GCC 4.7.0 20120414 (prerelease)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import time >>> ts = time.time() >>> print ts 1355563265.81 >>> import datetime >>> st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S') >>> print st 2012-12-15 01:21:05 >>>The
tsпеременная-это время, возвращаемое в секундах. Затем я преобразовал его в строку с помощьюdatetimeбиблиотека делает его строкой, которая читается человеком.
это текстовом виде типа timestamp которые могут быть использованы в текстовых файлах. (В прошлом название вопроса было другим, поэтому введение к этому ответу было изменено, чтобы уточнить, как его можно было интерпретировать в то время. [обновлено 2016-01-14])
вы можете получить метку времени в виде строки с помощью
.now()или.utcnow()наdatetime.datetime:>>> import datetime >>> print datetime.datetime.utcnow() 2012-12-15 10:14:51.898000The
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
основываясь на ответе от #squiguy, чтобы получить истинную метку времени, я бы набрал ее из float.
>>> import time >>> ts = int(time.time()) >>> print(ts) 1389177318по крайней мере это понятие.
ответ может быть ни тем, ни другим.
ни:
time.time()возвращает примерное количество секунд, прошедших с начала эпохи. Результат не зависит от часового пояса, поэтому это не UTC и не местное время. Вот это POSIX defintion для "секунд с эпохи".как:
time.time()не требует синхронизации часов вашей системы, поэтому он отражает ее значение (хотя это не имеет ничего общего с местным часовым поясом). Разные компьютеры могут получать разные результаты одновременно. С другой стороны, если ваше компьютерное время и synchronized тогда легко получить время UTC от метки времени (если мы игнорируем високосные секунды):from datetime import datetime utc_dt = datetime.utcfromtimestamp(timestamp)о том, как получить временные метки из времени UTC в различных версиях Python, см. как я могу получить дату, преобразованную в секунды с эпохи в соответствии с UTC?
нет такого понятия, как "эпоха" в определенном часовом поясе. Эпоха четко определено в конкретный момент времени, поэтому, если вы измените часовой пояс, само время изменилось. В частности, на этот раз
Jan 1 1970 00:00:00 UTC. Так чтоtime.time()возвращает количество секунд с начала эпохи.
Comments