Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  4 1772
Jeg har fått en del XML filer som skal parses og settes inn i en SQL database. Men jeg forstår ikke Unix timestampen i XML filen.

Kode

<... datetime="Oct 5, 2012 5:11:14 PM" raw="1349449874145" ...>[...]</....>
'datetime' antar jeg er lagt inn bare for å kunne lese tiden enkelt
'raw' antok jeg var en unix timestamp, men når jeg prøvde å konvertere 'datetime' til unix timestamp så fikk jeg følgende:

Kode

1349449874
Som dere ser inneholder 'raw' tre siffer mer på slutten enn 'datetime': «145»

Kode

1349449874
1349449874145
Jeg følte at det var litt redutant å lagre dato og tid to ganger i SQL databasen, men tørr ikke å basere meg på 'raw' før før jeg vet nøyaktig hvilket format den er i.
Trigonoceps occipita
vidarlo's Avatar
Donor
Unix-time er tradisjonelt i sekunder. Dei tre siffera er antakeleg millisekunder. At det står 5:11:14 er litt underlig, for 1349449874 tilsvarer 2012-10-05T15:11:14+00:00. Det er antakeleg fordi datetime er i lokal tid.

Om du ikkje har bruk for millisekund kan du kappe vekk dei tre siste teikna.
War room
0xFF's Avatar
Trådstarter Donor
Sitat av vidarlo Vis innlegg
Unix-time er tradisjonelt i sekunder. Dei tre siffera er antakeleg millisekunder.
Vis hele sitatet...
Jeg ser ikke helt hva jeg skal med millisekunder, så jeg går nok for å strippe bort slutten, og da for jeg også plass til den i en unsigned 32 bits int.

Sitat av vidarlo Vis innlegg
At det står 5:11:14 er litt underlig, for 1349449874 tilsvarer 2012-10-05T15:11:14+00:00. Det er antakeleg fordi datetime er i lokal tid.
Vis hele sitatet...
Bra du gjorde meg oppmerksom på det, jeg har brukt python til å konvertere 'datetime' til unix timestamp, men har jo ikke tenkt på at datamaskinen min går etter lokal tid.

Takk for rask svar.
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av 0xFF Vis innlegg
Bra du gjorde meg oppmerksom på det, jeg har brukt python til å konvertere 'datetime' til unix timestamp, men har jo ikke tenkt på at datamaskinen min går etter lokal tid.
Vis hele sitatet...
Unix timestamps er alltid UTC.
War room
0xFF's Avatar
Trådstarter Donor
Sitat av vidarlo Vis innlegg
Unix timestamps er alltid UTC.
Vis hele sitatet...
Jeg er klar over det, derfor jeg sa at det var bra du gjorde meg oppmerksom på det. Da jeg har parset tiden med:

Kode

datetime.strptime('datetime', 'format')
og fått en datetime.datetime() objekt i retur. Som jeg har brukt videre som argument i 'time.mktime()' kall

Kode

time.mktime(datetime.datetime().timetuple())
Men jeg ser jo nå 'time.mktime()' returnerer sekunder siden epoch regnet i lokaltid.
Her burde jeg heller ha brukt

Kode

calendar.timegm(datetime.datetime().timetuple())
Sist endret av 0xFF; 21. desember 2018 kl. 19:06.