Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python: onko time.time() UTC?

E1ss [20.10.2020 19:59:52]

#

Netissä kaikki tuntuu sanovan että time.time() antaisi UTC ajan koska epoch timella ei pitäisi olla aikavyöhykkeitä. En kuitenkaan saanut koodiani toimimaan niin rupesin tutustumaan tarkemmin näihin ja huomasin että
`datetime.datetime.utcnow().timestamp()`
ja
`time.time()`
tulostus on eri. Lukemien perusteella sanoisin että `time.time()` on suomen ajassa ja toinen UTC.

Olenko siis oikeassa että time.time() on aikavyöhyke kohtainen?

jalski [20.10.2020 20:59:08]

#

E1ss kirjoitti:

`time.time()`
tulostus on eri. Lukemien perusteella sanoisin että `time.time()` on suomen ajassa ja toinen UTC.

Olenko siis oikeassa että time.time() on aikavyöhyke kohtainen?

Veikkaisin, että time.time() on UTC-ajassa ja datetime.datetime.utcnow().timestamp() palauttaa tuloksen väärän aikavyöhykkeen mukaan.

Voisi olla parempi kirjoittaa:

import datetime
from datetime import timezone

datetime.datetime.now(tz=timezone.utc).timestamp()

E1ss [21.10.2020 09:32:13]

#

Joo olet oikeassa koska kokeilin tätä koodia kahdella eri aikavyöhykkeellä ja ainoastaan toinen eli se utcnow vaihtoehto vaihtui sen mukaan.

import time
from datetime import datetime, timezone

print("1:", datetime.now(tz=timezone.utc).timestamp())
print("2:", datetime.utcnow().timestamp())
print("3:", time.time())

Metabolix [21.10.2020 10:25:01]

#

Ongelma selviää myös dokumentaatiosta: utcnow() palauttaa nykyisen UTC-vyöhykkeen aikaleiman mutta ilman aikavyöhyketietoa, ja timestamp() tulkitsee tämän sitten edustavan nykyistä aikavyöhykettä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta