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(<ime); stime=gmtime(<ime); int gmtmins=stime->tm_hour*60+stime->tm_min; int gmtday=stime->tm_mday; stime=localtime(<ime); 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/;
heheheLG ^^
-
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...