Vracia time.time()
v časovom module Pythonu systémový čas alebo čas v UTC?
Funkcia time.time()
vráti počet sekúnd od epochy v sekundách. Všimnite si, že "epocha" je definovaná ako začiatok 1. januára 1970 v UTC. Epocha je teda definovaná v zmysle UTC a určuje globálny časový okamih. Bez ohľadu na to, kde sa nachádzate, "sekundy po epoche" (time.time()) vráti rovnakú hodnotu v rovnakom okamihu.
Tu je ukážka výstupu, ktorú som spustil na svojom počítači, pričom som ju previedol aj na reťazec.
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
>>>
Premenná ts
je vrátený čas v sekundách. Potom som ho previedol na reťazec pomocou knižnice datetime
, čím som z neho vytvoril reťazec, ktorý je čitateľný pre človeka.
Ide o textovú formu časovej pečiatky, ktorú možno použiť v textových súboroch. (Názov otázky bol v minulosti iný, preto bol úvod tejto odpovede zmenený, aby bolo jasné, ako sa dá interpretovať čas. [aktualizované 2016-01-14])
Časovú pečiatku môžete získať ako reťazec pomocou funkcie .now()
alebo .utcnow()
funkcie datetime.datetime
:
>>> import datetime
>>> print datetime.datetime.utcnow()
2012-12-15 10:14:51.898000
Hodnota now
sa podľa očakávania líši od hodnoty utcnow
- inak fungujú rovnako:
>>> print datetime.datetime.now()
2012-12-15 11:15:09.205000
Časovú značku môžete explicitne vykresliť do reťazca:
>>> str(datetime.datetime.now())
'2012-12-15 11:15:24.984000'
Alebo môžete byť ešte explicitnejší a formátovať časovú pečiatku tak, ako sa vám páči:
>>> datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p")
'Saturday, 15. December 2012 11:19AM'
Ak chcete formát ISO, použite metódu .isoformat()
objektu:
>>> datetime.datetime.now().isoformat()
'2013-11-18T08:18:31.809000'
Môžete ich použiť v premenných na výpočty a tlač bez konverzie.
>>> 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
Na základe odpovede od #squiguy, aby som získal skutočnú časovú pečiatku, napísal by som ju z floatu.
>>> import time
>>> ts = int(time.time())
>>> print(ts)
1389177318
Aspoň taký je koncept.