Kas Pythoni time.time() tagastab kohaliku või UTC ajatempli?

Kas Pythoni ajamooduli time.time() tagastab süsteemi aja või aja UTC-s?

Lahendus

Funktsioon time.time() tagastab sekundite arvu alates epohhist sekunditena. Pange tähele, et "epohhi" on määratletud kui 1. jaanuari 1970. aasta algus UTC-s. Seega on epohhi määratletud UTC-s ja määrab globaalse ajahetke. Ükskõik, kus te olete "sekundit pärast epohhi" (time.time()) tagastab sama väärtuse samal hetkel.

Siin on mõned näited väljundist, mida ma oma arvutis jooksutasin, konverteerides selle samuti stringiks.

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
>>>

Muutuja ts on tagastatud aeg sekundites. Seejärel konverteerisin selle stringiks, kasutades datetime raamatukogu, muutes selle stringiks, mis on inimesele loetav.

Kommentaarid (12)

See on tekstivormi ajatempli jaoks, mida saab kasutada teie tekstifailides. (Küsimuse pealkiri oli varem teistsugune, seega muudeti selle vastuse sissejuhatust, et selgitada, kuidas seda saab tõlgendada kui aega. [uuendatud 2016-01-14])

Ajastustempli saab saada stringina, kasutades .now() või .utcnow() funktsioonist datetime.datetime:

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

now erineb utcnow-st nagu oodatud -- muidu töötavad nad samamoodi:

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

Saate ajatempli selgesõnaliselt stringiks muuta:

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

Või võite olla veelgi selgemalt, et vormindada ajatemplit nii, nagu soovite:

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

Kui soovite ISO-vormingut, kasutage objekti meetodit .isoformat():

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

Neid saab kasutada muutujates arvutuste tegemiseks ja printimiseks ilma konverteerimiseta.

>>> 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
Kommentaarid (6)

Tuginedes #squiguy vastusele, et saada tõelist ajatemplit, kirjutaksin selle floatist.

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

Vähemalt see'on kontseptsioon.

Kommentaarid (9)