O time.time()
no módulo de tempo Python retorna o tempo do sistema's ou o tempo em UTC?
A função time.time()
retorna o número de segundos desde a época, como segundos. Note que a função "epoch" é definida como o início de 1 de janeiro de 1970 no UTC. Então a época é definida em termos de UTC e estabelece um momento global no tempo. Não importa onde você está "segundos depois de epoch" (time.time()) retorna o mesmo valor no mesmo momento.
Aqui está um exemplo de saída que eu executei no meu computador, convertendo-o também para uma string.
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
>>>
A variável ts' é o tempo retornado em segundos. Eu então a converti para uma string utilizando a biblioteca
datetime', tornando-a uma string legível por humanos.
Isto é para a forma de texto de um carimbo da hora que pode ser usado nos seus ficheiros de texto. (O título da pergunta era diferente no passado, por isso a introdução a esta resposta foi alterada para esclarecer como poderia ser interpretada como a hora. atualizado 2016-01-14])
Você pode obter o carimbo da hora como uma string utilizando o .now()
ou .utcnow()
do `datetime.datetime':
>>> import datetime
>>> print datetime.datetime.utcnow()
2012-12-15 10:14:51.898000
O now
difere do utcnow
como esperado -- caso contrário eles funcionam da mesma maneira:
>>> print datetime.datetime.now()
2012-12-15 11:15:09.205000
Você pode renderizar explicitamente o carimbo da hora para a corda:
>>> str(datetime.datetime.now())
'2012-12-15 11:15:24.984000'
Ou você pode ser ainda mais explícito para formatar o timestamp da maneira que você gosta:
>>> datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p")
'Saturday, 15. December 2012 11:19AM'
Se você quiser o formato ISO, utilize o método .isoformat()
do objeto:
>>> datetime.datetime.now().isoformat()
'2013-11-18T08:18:31.809000'
Você pode usá-los em variáveis para cálculos e impressão sem conversões.
>>> 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
Baseado na resposta do #squiguy, para obter um verdadeiro timestamp, eu digitaria a partir do float.
>>> import time
>>> ts = int(time.time())
>>> print(ts)
1389177318
Pelo menos esse's o conceito.