none
localtime() in VS 2013 RRS feed

  • 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

    Donnerstag, 9. April 2015 07:48

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; //


    Donnerstag, 9. April 2015 10:05

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; //


    Donnerstag, 9. April 2015 10:05
  • Hallo Rene,

    danke für Deinen heißen Tipp! Jetzt geht´s!

    Es obliegt mir nicht zu fragen, warum es derartige Differenzen zwischen VS 2003 und VS 2013 gibt...


    Patrick

    Donnerstag, 9. April 2015 12:28
  • 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. :-)

    Donnerstag, 9. April 2015 12:55
  • 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ß,
    Dimitar


    Bitte 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.

    Donnerstag, 9. April 2015 14:34
    Administrator