La funzione time.time()
nel modulo Python time restituisce il tempo del sistema o il tempo in UTC?
La funzione time.time()
restituisce il numero di secondi dall'epoca, come secondi. Si noti che la "epoch" è definita come l'inizio del 1° gennaio 1970 in UTC. Quindi l'epoca è definita in termini di UTC e stabilisce un momento globale nel tempo. Non importa dove vi troviate "secondi dopo l'epoca" (time.time()) restituisce lo stesso valore nello stesso momento.
Ecco alcuni esempi di output che ho eseguito sul mio computer, convertendoli anche in una stringa.
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
>>>
La variabile ts
è il tempo restituito in secondi. L'ho poi convertito in una stringa usando la libreria datetime
rendendolo una stringa leggibile per l'uomo.
Questo è per la forma testuale di un timestamp che può essere usato nei tuoi file di testo. (Il titolo della domanda era diverso in passato, quindi l'introduzione a questa risposta è stata cambiata per chiarire come potrebbe essere interpretato come il tempo. [aggiornato 2016-01-14])
Puoi ottenere il timestamp come stringa usando il .now()
o il .utcnow()
del datetime.datetime
:
>>> import datetime
>>> print datetime.datetime.utcnow()
2012-12-15 10:14:51.898000
Il now
differisce da utcnow
come ci si aspettava - altrimenti funzionano allo stesso modo:
>>> print datetime.datetime.now()
2012-12-15 11:15:09.205000
Puoi rendere il timestamp alla stringa in modo esplicito:
>>> str(datetime.datetime.now())
'2012-12-15 11:15:24.984000'
Oppure puoi essere ancora più esplicito per formattare il timestamp nel modo che preferisci:
>>> datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p")
'Saturday, 15. December 2012 11:19AM'
Se vuoi il formato ISO, usa il metodo .isoformat()
dell'oggetto:
>>> datetime.datetime.now().isoformat()
'2013-11-18T08:18:31.809000'
Puoi usarli nelle variabili per i calcoli e la stampa senza conversioni.
>>> 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
Sulla base della risposta di #squiguy, per ottenere un vero timestamp lo fonderei da float.
>>> import time
>>> ts = int(time.time())
>>> print(ts)
1389177318
Almeno questo è il concetto.