Datum in Unixtimestamp wandeln
-
Hey
Ich möchte gerne ein Datum, welches mir in 3 Integern (day, month, year) vorliegt, in einen Unixtimestamp, also die Sekunden seit 1970 wandeln.
Als Uhrzeit kann 00:00 angenommen werden.Meine Frage ist:
Bietet die C oder die C++ Standardbibliothek dafür eine Möglichkeit oder muss ich das selber mühsam umrechnen? Bzw gibt es da schon vorgefertigt eine simple Methode?viele Grüße
-
das einfachste ist, wenn du dein datum in eine "struct tm" packst (das ist standard c/c++) und diese dann mittels mktime() (das müsste posix sein) in die posix-variante time_t überführst. time_t ist nur ein typedef auf einen int.
sieht dann so aus:struct tm time_tm; //das temporäre objekt time_t time_unix; //das ziel time_tm.tm_year = year - 1900; time_tm.tm_mon = month; //achtung januar == 0 time_tm.tm_mday = day; //die hier müssen gesetzt werden, sonst kann das zu problemen führen time_tm.tm_hour = 0; time_tm.tm_min = 0; time_tm.tm_sec = 1; time_tm.tm_isdst = -1; //daylight-saving == unknown. //heißt: das system soll gefällig selber rausbekommen, ob zu dem zeitpunkt nötig oder nicht. //klappt daher nur für die lokale zeitzone. time_unix = mktime(&time_tm); if (time_unix == -1) [hier fehler]