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?
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()
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())
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ä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.