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]
    

Anmelden zum Antworten