Forum: PC-Programmierung Unix timestamp


von Werner (Gast)


Lesenswert?

Hallo,
ich brauche für eine Berechnung den Unixtimestamp vom 1.1.1984 00:00:00.
Auf der Seite:
http://www.onlineconversion.com/unix_time.htm
bekomme ich dafür:
441763200
geliefert.

Wenn ich jetzt in ein C-Programm auf einem PC:
1
time_t t;
2
t = 441763200L;
3
char* date = ctime(&t); 
4
printf("%s\n", date);

bekomme ich
"Sun Jan 01 01:00:00 1984"
ausgegeben.

Wenn ich in diesem Programm über die tm-Struktur das Datum einstelle und 
dann mittels
 t = mktime(&mt);
einen timestamp generiere, bekomme ich 441759600.

Welcher Wert ist richtig? Ich dachte der timestamp beachtet nicht 
Sommer/Winterzeit.

Gruß

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Zeitzone? Unix-Timestamp ist UTC bzw. GMT. Die auf Deinem Rechner aber 
dürfte GMT+1 (MEZ) sein.

von Werner (Gast)


Lesenswert?

Eigentlich habe ich in der tm Struktur die Umstellung mit
mt.tm_isdst = 0;
ausgestellt.
Ich will auf jeden Fall auch eine UTC Zeit erhalten.
Bei ctime() lässt sich das Verhalten leider garnicht umstellen.

von Niklas O. (nevm)


Lesenswert?

Hallo Werner,

ctime() macht dasselbe wie asctime(localtime()), konvertiert also
wie Rufus schon sagt die Zeit in Deine Zeitzone.

Du suchst gmtime().  Also asctime(gmtime()).

Niklas

von Werner (Gast)


Lesenswert?

Ah, Danke.
Daran lag es.

Gruß

von JonyGreen (Gast)


Lesenswert?

you can try this free online timestamp 
converter(http://www.online-code.net/unix-timestamp.html) to get a unix 
time.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Those of us who have sat six years in front of their keyboards will 
surely be quite happy about this kind of ... closure.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.