Timestamp zu gegebenem Datum+Uhrzeit berechnen?



  • Hallo,

    weis hier einer (und sagts mir auch 😉 ), wie man einen Timestamp zu einem gegebenem Datum+Uhrzeit berechnet und umgekehrt? 😕 Und zwar nicht mit fertig-Funktionen, die werden mir nicht zur Verfügung stehen. Geht mir einfach um das mathematische Prinzip.

    mfG Alloc 🙂



  • Hm, dann versuchs ich nomma bissi genauer 😉
    Ich meinte natürlich dieses Linux-Timestamp-Format, wie es auch in PHP etc zum einsatz kommt. Und dafür muss es ja schließlich irgendwie einen Algorithmus geben, wie man sowas berechnet, und genau diesen suche ich 😃

    mfG Alloc



  • Hi

    sagt dir der 1.1.1970 was? weist du was ein gregorianischer Kalender ist?
    dann kennst du die antwort bereits und must sie nur noch umsetzen.

    auserdem linux und php sind open source. wer es nicht selber hinkrigt sollte doch einfach so schlau sein und wissen wo man klauen kann. fragt sich nur ob man dann versteht was die da berechnen.

    googel dein freund und finder.

    gruss



  • Ja, 1.1.1970 is der beginn der Linux-Zeit, aba da ist ja immer noch des Problem der Schaltjahre un so 😃
    Gregorianischer Kalender, hmmmm, wat warn das nochmal? Ich weiss dass ichs kennen sollte, aba mir fällts grad nicht ein. Aba den PHP-Source anzuschauen macht irgendwie Sinn 😉

    thx

    /Edit: also, in den PHP-Sourcen wird auf C-Funktionen zurückgegriffen, nützt also erstmal auch nichts ^^. Naja, ma schaun was ich über den gregorianischen Kalender herausfinden kann.



  • 31,29/28,31,30,31,30,31,31,30,31,30,31 tage der einzelnen monate
    in Summe 365/366 tage je jahr.

    in alle durch 4 teilbaren jahre hat der Febraur 28 tage.
    in alle durch 100 teilbaren jahre hat der Febraur 29 tage.
    in alle durch 400 teilbaren jahre hat der Februar 28 tage.
    in allen anderen jahren hat der Februar 29 tage.

    ein tag hat 24 stunden.
    eine stunde 60 minuten.
    eine minute 60 sekunden.

    Ausgangspunkt der Zeitberechnungen 01.01.1970 00:00:00 UTC

    muss man noch weiter vorkauen?



  • na verflixt. Schaltjahre haben 29 alle anderen 28 tage. wieder mal ein zahlendreher.



  • Joa, wär nit schlecht ^^
    Wie berechnet man das denn dann? Ne Schleife über die ganzen Jahre und schaun Schaltjahr ja/nein und entsprechned multipliziern? Oda gibts da ne einfachere Möglichkeit?

    Also zB Datum= 2.3.2005
    Also Schleife von 1970 bis 2004:
    Wenn Schaltjahr dann Sekunden=Sekunden+Anzahl_Sekunden_Eines_Schaltjahres
    sonst Sekunden=Sekunden+Anzahl_Sekunden_Eines_Nicht_Schaltjahres

    Danach dann sowas ähnliches für alle Monate bis zum Datum:
    Schleife von 1 bis Monat-1:
    Sekunden=Sekunden+ Tage_Des_Monats*24Stunden_in_Sekunden

    usw.?

    mfG Alloc



  • k, habs in VB gelöst, des auf andre Sprachen zu portieren wird dann auch kein Problem mehr sein 😉

    thx nomma an alle für die Denkanstösse 😃



  • Um mal ein bißchen Haarspalterei zu betreiben: AnzahlJahre * TageProJahr + AnzahlSchaltjahre usw. *24*60*60 ist ja formal OK. Für ein Timestamp zur individuellen Markierung reicht das, aber physikalisch exakt ist diese Berechnung nicht:

    Zwischen Januar 1970 und November 2001 wurde vom IERS 22 Mal die Anweisung gegeben, eine Schaltsekunde einzufügen. Die bisher letzte Schaltsekunde war am 31. Dezember 1998 um 23:59:60 UTC.

    http://de.wikipedia.org/wiki/Schaltsekunde
    Wenn man's genau machen will, kann man von der Physikalisch-Technischen Bundesanstalt bestimmt erfahren, wann sämtliche Schaltsekunden seit 1.1.1970 eingefügt wurden.

    Von dem feinen Unterschied zwischen Sommer- und Winterzeit ganz zu schweigen. Keine Ahnung, wie die diversen Betriebssysteme Timestamps berechnen, aber nach der o.a. Simpel-Berechnung kommt jedenfalls was anderes heraus als z.B. WinNT berechnet. Und bei Win95 nochmal eine Stunde Unterschied. Aber das ist ja auch kein Betriebssystem...



  • hm, also bei mir kam genau das raus, was PHP auch geliefert hat, nur eine Stunde mehr (oder wars weniger? ^^). Und das reicht mir an Genauigkeit. Geht ja nur darum, ein Zeit-/Datumswert zu speichern und später wieder zurückzuwandeln, wenn ich da jeweils den gleichen Algorithmus verwende kommt dann ja auch wieder das gleiche raus 😉

    mfG Alloc


Anmelden zum Antworten