SYSTEMTIME und dessen zeitangabe



  • Hi,

    Ich hoffe ich bin jetzt hier richtig unter dem WinAPI forum.

    Ich habe ein Problem mit der funktion "GetSystemTime"

    SYSTEMTIME st;
    			GetSystemTime(&st);
    			WORD year=st.wYear;
    			WORD month=st.wMonth;
    			WORD day=st.wDay;
    			WORD hour=st.wHour;
    			WORD min=st.wMinute;
    

    In der MSDN hilfe steht, "wHour Specifies the current hour" also eigentlich die jetzige Stunde gebe ich das ganze allerdings aus

    cout<<day<<"."<<month<<"."<<year<<" ON "<<hour<<":"<<min<<" o clock"<<endl;
    

    Stimmt alles bis auf den hour Wert den dieser liefert mir eine sehr komische zahl und zwar 29816

    Aber warum?



  • hi,
    scheint mir so als tickt bei dir was nicht richtig ( in Bezug auf deine Uhr :D)

    Hab mal im Petzold nachgeguckt aber nichts zu dem "Phänomen" gefunden. Mich würde mal interessieren ob sich der Wert für wHour verändert wenn eine Stunde um ist oder genau gleich bleibt ? Auf jedenfall ist dies kein gültiger Wert für wHour denn normalerweise erscheinen dort nur Werte von 0 bis 23

    mfG noha



  • Danke noha

    Ich hab das ganze jetzt anders gelöst und zwar mit der präpozessor anweisung
    __TIME__

    cout<<day<<"."<<month<<"."<<year<<" ON "<<__TIME__<<endl;
    

    Und so gehts auch glücklicherweise. Aber ich habe keine Ahnung warum ich so einen komischen wert erhalte.

    Hier der auszug aus meiner logfile mit der komischen Angabe:

    The following Parameters have been edited on (DD-MM-YY): 9.7.2007 ON 29816:25 o clock
    Nodepath: PERS.INIT.AUTOALIGN.Input
    Old Value: 2333
    New Value: 2334
    ----------------------------------------------------------------------------------
    ----------------------------------------------------------------------------------
    The following Parameters have been edited on (DD-MM-YY): 9.7.2007 ON 29816:45 o clock
    Nodepath: PERS.CONFIG.TriggerMode
    Old Value: -2
    New Value: -4
    ----------------------------------------------------------------------------------

    Wobei 29816 eigentlich 11Uhr (oder hab ich das um 10Uhr gemacht 😕 ) entsprechen müsste



  • Hab das kompiliert.
    Versteh ich nicht, warum das erste Beispiel bei dir nicht läuft.
    Bei mir gibt es keine Fehler, alles ok, die Uhrzeit wird korrekt angezeigt.



  • Exitus222 schrieb:

    Danke noha

    Ich hab das ganze jetzt anders gelöst und zwar mit der präpozessor anweisung
    __TIME__

    cout<<day<<"."<<month<<"."<<year<<" ON "<<__TIME__<<endl;
    

    Ist dir klar, welcher Wert in __TIME__ steht? Das ist nicht die aktuelle Zeit, sondern der Zeitpunkt, zu dem das Programm compiliert wurde.



  • zu __TIME__ : ist das nicht statisch ( wegen Präprozessor ) ?

    Denn wenn du dann die aktuelle Zeit benötigst wirst du die Compilier-Zeit erhalten. ( Hängt natürlich davon ab wozu du dies brauchst )



  • Bei mir klappt das Beispiel oben auch ohne Probleme.
    Sind eure Compiler kaputt ??? 😕



  • komischer weise klappt es jetzt nach einem reboot auch...

    Sehr seltsam. Denn irgendwie muss der fehler ja zustande gekommen sein. Ich hoffe mal der tritt nicht wieder auf. Obwohl ansich hoffen nciht die beste variante ist...

    **Edit:
    *lol* von wegen ich krieg hier nen koller
    Die zeit stimmt jetzt zwar schonmal besser als der tausenderwert von vorhin aber jetzt ist es zwei und aufeinmal schreibt er mir 12 Uhr

    ich habe lediglich die varibale hour gleich durch st.wHour im cout aufruf ersetzt

    Wenn ich nach zeitzonen ginge stimmt das auch nicht denn hier ist unser GMT +1. Würde er also danach gehen müste hier logischerweise 13 Uhr stehen. Aber es steht zwölf dort!
    ich krieg echt die kriese *lach*

    Wir krieg ich einfach die zeit ausgeben die mir unten der netten uhr angzeigt wird... hätte nicht gedacht das sich das als solches problem herausstellt**



  • dafür kenn ich die Lösung:
    es handelt sich dabei wohl um das Problem mit der Zeitzone -> Durch die Sommerzeit haben wir im Moment GMT+2 ! 🤡
    Um die aktuelle Zeit jetzt richtig zu berechnen musst du eine Funktion wie GetLocalTime benutzen die deine SYSTIME Struktur umrechnet (diese achtet auch auf Sommerzeit ect. )

    mfG noha


Anmelden zum Antworten