Uhrzeitangabe runden



  • Die Zeitangabe in einem Programm möchte ich auf 5 Minuten genau haben. Es soll also nur Zeiten wie :00, :05, :10, :15, :20, usw. geben.
    Wie kann man das mit einem Algorithmus am günstigsten beschreiben?
    Ich habe keine Lust, das mit einer case- oder if-Abfrage umständlich zu realisieren, die dann die Hälfte des Objektes einnimmt.



  • - durch 5 teilen
    - auf 1 runden
    - mit 5 malnehmen


  • Mod

    Du könntest die Zeit in unix-time umwandeln und dann auf die nächste durch 300 teilbare Zahl runden.



  • Danke, danke, manchmal ist man ja wirklich blind.
    Aber ich wusste wenigstens noch, dass da irgendwas möglich sein müsste 😃
    Aber was heisst denn Unix-Zeit?


  • Mod

    Sanni schrieb:

    Danke, danke, manchmal ist man ja wirklich blind.
    Aber ich wusste wenigstens noch, dass da irgendwas möglich sein müsste 😃
    Aber was heisst denn Unix-Zeit?

    Unix Zeit ist eine recht weit in Computersystemen verbreitete Art und Weise, Uhrzeiten darzustellen. Man zählt dabei die Sekunden (meistens ganzzahlig) ab einem bestimmten, festgelegten Zeitpunkt. Meistens ist dies der 1. Januar 1970 um 0:00 Uhr.

    (Es wird viel spekuliert ob uns dies einmal ernsthafte Probleme bereiten könnte, da im Jahr 2038 genau 2^32 Sekunden seit 1970 vergangen sein werden und Unix-Uhren die intern mit 32 Bit Werten arbeiten dann überlaufen werden. Bereite dich auf einen gewaltigen Medienhype und viel rausgeschmissenes Geld vor. Das Jahr 2037 wird ein gutes Jahr für Computerprogrammierer sein. Tatsächlich passieren wird selbstverständlich genausowenig wie im Jahr 2000.)



  • wie kann ich mich denn dagegen schützen, daß eines Tages im Jahr 2038 alle Dateien plötzlich Datumsstempel vom 1.1.1970 tragen werden?

    Ist ja wichtig, zB für die Versionsverwaltung von Backups.

    Ist da irgendetwas geplant oder im Gange, etwa Erweiterung des Zählers auf 64 Bit?



  • SeppJ schrieb:

    da im Jahr 2038 genau 2^32 Sekunden seit 1970 vergangen sein werden

    <nitpick>2^31, es sind signed-Werte</nitpick>



  • zum Beispiel schrieb:

    Ist da irgendetwas geplant oder im Gange, etwa Erweiterung des Zählers auf 64 Bit?

    Ja, genau. Und das schöne ist: ein Teil geht ganz automatisch. Zumindest auf Servern und Desktops werden dann eh nur noch 64Bit CPUs eingesetzt werden. Und auf denen ist time_t dann einfach ein 64Bit-Wert. Dateiformate werden bis dahin auch fast alle mindestens einmal neu entworfen. Bleibt also "nur" die Embedded-Ecke, um die man sich Sorgen machen muss.



  • Hey! Und wie runde ich die unixzeit auf eine ganze stunde?
    EDIT: achso: auf eine zahl runden die durch 60*60 teilbar ist. okay okay.



  • SG1 schrieb:

    Bleibt also "nur" die Embedded-Ecke, um die man sich Sorgen machen muss.

    Die in den nächsten zwanzig Jahren ja bestimmt auch nicht auf mehr als 32bit umgestellt haben werden..


Anmelden zum Antworten