Geeft time.time()
in de Python tijdmodule de systeem's tijd terug of de tijd in UTC?
De time.time()
functie geeft het aantal seconden sinds de epoch, als seconden. Merk op dat de "epoch" is gedefinieerd als het begin van 1 januari 1970 in UTC. Dus de epoche is gedefinieerd in termen van UTC en stelt een globaal moment in de tijd vast. Het maakt niet uit waar je bent "seconds past epoch" (time.time()) geeft dezelfde waarde terug op hetzelfde moment.
Hier is wat voorbeelduitvoer die ik op mijn computer heb uitgevoerd, waarbij ik het ook naar een string heb geconverteerd.
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
>>>
De ts
variabele is de teruggegeven tijd in seconden. Ik heb het geconverteerd naar een string met behulp van de datetime
bibliotheek, zodat het een string wordt die leesbaar is voor mensen.
Dit is voor de tekstvorm van een timestamp die kan worden gebruikt in uw tekstbestanden. (De titel van de vraag was in het verleden anders, dus de inleiding van dit antwoord werd gewijzigd om te verduidelijken hoe het kon worden geïnterpreteerd als de tijd. [bijgewerkt 2016-01-14])
Je kunt de timestamp als een string krijgen met behulp van de .now()
of .utcnow()
van de datetime.datetime
:
>>> import datetime
>>> print datetime.datetime.utcnow()
2012-12-15 10:14:51.898000
De now
verschilt van utcnow
zoals verwacht -- verder werken ze op dezelfde manier:
>>> print datetime.datetime.now()
2012-12-15 11:15:09.205000
Je kunt de tijdstempel expliciet naar de string renderen:
>>> str(datetime.datetime.now())
'2012-12-15 11:15:24.984000'
Of je kunt nog explicieter zijn om de tijdstempel te formatteren zoals jij dat wilt:
>>> datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p")
'Saturday, 15. December 2012 11:19AM'
Als je het ISO formaat wilt, gebruik dan de .isoformat()
methode van het object:
>>> datetime.datetime.now().isoformat()
'2013-11-18T08:18:31.809000'
Je kunt deze gebruiken in variabelen voor berekeningen en afdrukken zonder conversies.
>>> 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
Gebaseerd op het antwoord van #squiguy, om een echte tijdstempel te krijgen zou ik het vanuit float typen.
>>> import time
>>> ts = int(time.time())
>>> print(ts)
1389177318
Tenminste dat's het concept.