Benutzer mit den meisten Antworten
localtime() in VS 2013

Frage
-
Hallo *,
in VS 2003 konvertierte ich einen long wert in Zeitformat mit:
struct tm *nt;
int nJahr, nMonat, nTag;
long lTime = pLogBuch->m_lTime; // Enthält Zeit als long
nt = localtime ( &lTime );
if ( nt != NULL ) {
nJahr = nt->tm_year;
nMonat = nt->tm_mon + 1;
nTag = nt->tm_mday;
..........................................................
In VS 2013 funktioniert diese Konstruktion nicht!
Ich bin für jeden Tipp dankbar, wie ich die Zeitwerte aus der long Variable in VS 2013 gewinnen kann!
Patrick
Patrick
Antworten
-
In VS 2013 funktioniert diese Konstruktion nicht!
"Funktioniert nicht" ist eine ganz wunderbare Problem-Beschreibung, Hut ab! Aber in diesem speziellen Fall ist "nicht funktionieren" auch völlig richtig, denn localtime erwartet einen Zeiger auf time_t und nicht auf long. Dein long ist doch nur 32 Bit breit, time_t dagegen 64 Bit. Also entweder verwendest Du direkt _localtime32 oder Du machst es richtig und schreibst:
time_t lTime = pLogBuch->m_lTime; //
- Bearbeitet Rene Koenig Donnerstag, 9. April 2015 10:10
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 9. April 2015 12:37
- Als Antwort markiert Havel Donnerstag, 9. April 2015 14:56
Alle Antworten
-
In VS 2013 funktioniert diese Konstruktion nicht!
"Funktioniert nicht" ist eine ganz wunderbare Problem-Beschreibung, Hut ab! Aber in diesem speziellen Fall ist "nicht funktionieren" auch völlig richtig, denn localtime erwartet einen Zeiger auf time_t und nicht auf long. Dein long ist doch nur 32 Bit breit, time_t dagegen 64 Bit. Also entweder verwendest Du direkt _localtime32 oder Du machst es richtig und schreibst:
time_t lTime = pLogBuch->m_lTime; //
- Bearbeitet Rene Koenig Donnerstag, 9. April 2015 10:10
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 9. April 2015 12:37
- Als Antwort markiert Havel Donnerstag, 9. April 2015 14:56
-
Es obliegt mir nicht zu fragen, warum es derartige Differenzen zwischen VS 2003 und VS 2013 gibt...
Naja, wenn Du bedenkst, dass Software auch schon mal 20 Jahre zu überstehen hat, ist das Ende Deines longs in greifbarer Nähe. Sei froh, dass das rechtzeitig angepasst wurde. Und hättest Du gleich richtig gearbeitet, hättest Du die Änderung doch auch gar nicht bemerkt. :-)
-
Hallo Patrick,
Du kannst den Beitrag, der Deine Frage beantwortet hat, als Antwort markieren, damit auch künftige Leser dieses Threads leichter auf die Lösung kommen.
Gruß,
DimitarBitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.