Kirjautuminen

Haku

Tehtävät

Kilpailu

Algoritmikisa
Putka Open 2020 -kisan
Finalistit julkaistaan pian...

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

Sivu 1 / 1

E1ss [20.10.2020 19:59:52]

Lainaa #

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]

Lainaa #

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]

Lainaa #

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]

Lainaa #

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

Muista lukea kirjoitusohjeet.
Tietoa sivustosta