ist das normal ??



  • Hallo!

    warum gibt mir der folgende code andere zeitzonen differenzen aus als der windows "datum und uhrzeit"-dialog??

    std::string GetLocalDate() {
        time_t ltime;
        tm *stime;
        time(&ltime);
    
        stime=gmtime(&ltime);
        int gmtmins=stime->tm_hour*60+stime->tm_min;
        int gmtday=stime->tm_mday;
    
        stime=localtime(&ltime);
        int localmins=stime->tm_hour*60+stime->tm_min;
    
        int diff=(gmtmins-localmins)*-1;
        int h=diff/60;
        if (gmtday<stime->tm_mday) h=h+24;
        int m=diff%60;
    
        char ctime[33];
        strftime(ctime, sizeof(ctime), "%a, %d %b %Y %H:%M:%S ", stime);
    
        std::string datestr=ctime;
    
        if ((h<10) && (h>-1)) datestr=datestr+"+0"+bonklib::IntToStr(h);
        else if ((h>-10) && (h<0)) datestr=datestr+"-0"+bonklib::IntToStr((h*-1));
        else if (h>9) datestr=datestr+"+"+bonklib::IntToStr(h);
        else if (h<-9) datestr=datestr+"-"+bonklib::IntToStr((h*-1));
    
        if ((m<10) && (m>-1)) datestr=datestr+"0"+bonklib::IntToStr(m);
        else if ((m>-10) && (m<0)) datestr=datestr+"0"+bonklib::IntToStr((m*-1));
        else if (m>9) datestr=datestr+bonklib::IntToStr(m);
        else if (m<-9) datestr=datestr+bonklib::IntToStr((m*-1));
    
        return datestr; // z.b. Fri, 27 May 2005 13:47:47 +0200
    }
    

    z.b:
    Chiuhahua, La Paz, Mazatlan:
    win -0700
    mein code -0600
    oder Dublin, Edinbourgh, Lissabon, London:
    win +0000
    mein code: +0100
    oder Jekaterinburg
    win +0500
    mein code: +0600
    😕 😕

    mfg und schon mal danke



  • Hast du Sommer- und Winterzeit berücksichtigt?



  • aber das ändert da doch nix dran oder?
    schließlich schickt z.b. mein mail-client auch +0200 und windows sagt aber das wir nur +0100 haben. woran liegt das??



  • was hat deine frage mit winapi zu tun?



  • Höööö?? Was zur Hölle ist bonklib:: ...????
    Wahrscheinlich hat der Autor der Funktion/Bibliothek, die Du benutzst, eine andere Zeitbasis zu grunde gelegt, als die aktuelle in Deutschland.
    Daher vermutlich die konstante Abweichung |0100| .

    Möglicherweise benutzst Du eine Funktion, die ein Autor aus Afrika geschrieben hat ?? Wieso gerade Afrika ??

    Tjaaa: Afrika umfasst insgesamt 6 Zeitzonen von GMT-1 bis GMT+4, davon nur zwei Länder mit Sommerzeiten.
    Europa umfasst insgesamt 5 Zeitzonen von GMT-1 (Azoren) bis GMT+3. Alle Länder verwenden die "Daylight Saving Time" .
    Das ist also ein deutliches Indiz für die Differenz |0100| ....blah...
    Woher ich das weiß ? ---> &http://www.autoreise.de/weltzeit/;
    hehehe

    LG ^^



  • guckst du
    [cpp]bonklib::IntToStr(h)[/cpp]
    macht nix anderes als ein int in ein std::string zu konvertieren.
    außerdem bin ich mir ziemlich sicher das mein code richtig ist.
    schließlich ist es *keine* konstante abweichung!! sonden nur bei manchen. und, wie gesagt, z.b. mein mail-client (m2 von opera) errechnet für unsere zeitzone +0200 während windows hier nur +0100 angibt...???



  • hmmmmmmmmm schrieb:

    was hat deine frage mit winapi zu tun?

    mh, naja nix direkt, aber doch mit windows, daher hielt ich das c++ forum für weniger angebracht...


Log in to reply