time_t aus Datum vor dem 01.01.1970
-
Hallo Community,
ich habe da ein Problem mit einem Datum vor dem 01.01.1970.
Folgendes Code-Snippet funktioniert wunderbar bei allen Datis, die dem 01.01.1970 nachfolgen. Bei Datis, die dem 01.01.1970 vorangehen liefert mktime() immer -1.
Wie kann ich z. B. ein Geburtsdatum wie den 21.6.1946 in einen time_t umwandeln?#include <ctime> #include <iostream> using namespace std; int main(int argc, char *argv[]) { // Soll aus dem 21.06.1946 einen time_t machen tm tms = {0}; tms.tm_mday = 21; tms.tm_mon = 6 - 1; tms.tm_year = 1946 - 1900; time_t t = mktime( &tms ); std::cout << t << std::endl; std::cout << ctime( &t ); // Ausgabe: // -1 // Mon Jun 21 00:00:00 1971 }
Gruß
H.-Gerd
-
Balrog schrieb:
Wie kann ich z. B. ein Geburtsdatum wie den 21.6.1946 in einen time_t umwandeln?
Gar nicht. time_t ist nicht geeignet, um solche Daten darzustellen. Warum benutzt du nicht asctime?
Übrigens: Was sind "Datis"?
-
MFK schrieb:
Balrog schrieb:
Wie kann ich z. B. ein Geburtsdatum wie den 21.6.1946 in einen time_t umwandeln?
Gar nicht. time_t ist nicht geeignet, um solche Daten darzustellen. Warum benutzt du nicht asctime?
Weil ich keine String-Repräsentation eines Datums benötige, sondern einen numerischen Wert. Mit dem läßt sich z. B. das Durchschnittsalters einer Personengruppe bestimmen.
Und warum sollte ein time_t nicht geeignet sein, Werte jenseits des 01.01.1970 darzustellen? Ein time_t ist in aller Regel ein Signed Integer (ob 32- oder 64-bittig sei an dieser Stelle egal) und somit durchaus in der Lage negative Werte anzunehmen und ergo ein Datum vor dem 01.01.1970 zu sein.
Beweis:time_t h = -1000000; std::cout << ctime( &h );
liefert z. B. die Ausgabe "Sat Dec 20 11:13:20 1969". q. e. d.
Ursache meines Problems ist also nicht der time_t an sich, sondern die Methode mktime().MFK schrieb:
Übrigens: Was sind "Datis"?
Datumse = Plural Datum
-
Balrog schrieb:
Datumse = Plural Datum
Daten ist der Plural von Datum.
-
PuppetMaster2k schrieb:
Balrog schrieb:
Datumse = Plural Datum
Daten ist der Plural von Datum.
Und ich dachte hier im Forum ginge es um C++ und nicht um Deutsch...
Wie schon angemerkt, eigentlich bin ich auf der Suche nach dem verschollenen Datum. Oder meinetwegen auch: nach den verschollenen Daten.