Überprüfung -> Zeitstempel und Schaltjahr
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
antwort
code
dank
einfachheit
frage
funktion
funktionieren
implementierung
jahr
millisekunde
not
rest
schaltjahr
tag
uhr
url
vier
zahl
zeitstempel
ziel
-
Hallo lima-city community,
ich stehe vor einem Rätzel.
Ich habe folgende Zeitstempel:
1451606400 1388534400 1325376000 1199145600 1072915200 1009843200 0946684800 0820454400
Immer der erste Tag des Jahres um 0 Uhr:
2016 2014 2012 2008 2004 2002 2000 1996
Nun möchte ich die Zeitstempel auf das Schaltjahr überprüfen.
Folgender Code: (https://en.wikipedia.org/wiki/Leap_year) überprüft das Jahres als vier stellige Zahl:
if (year is not divisible by 4) then (it is a common year) else if (year is not divisible by 100) then (it is a leap year) else if (year is not divisible by 400) then (it is a common year) else (it is a leap year)
Gäbe es auch die Möglichkeit nur den Zeitstempel zu überprüfen (ohne das Jahr vorher auszurechen)?
Wenn ja, wie sähe die Implementierung in etwa aus?
Es müsste ja auch fasst genau so funktionieren wie mit der vier stellige Jahres-Zahl.
Danke für eure Hilfe.
MfG willstdueswissen -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
willstdueswissen schrieb:
Gäbe es auch die Möglichkeit nur den Zeitstempel zu überprüfen (ohne das Jahr vorher auszurechen)?
Wenn ja, wie sähe die Implementierung in etwa aus?
Es müsste ja auch fasst genau so funktionieren wie mit der vier stellige Jahres-Zahl.
Beispielsweise kann in JavaScript eine sehr simple Implementation so aussehen:
function istSchaltjahr(t) { j = new Date(t * 1000).getFullYear(); return !(j % 4 > 0 || (j % 100 == 0 && j % 400 > 0)); }
Der Parameter t ist der Unix-Zeitstempel (in Sekunden) als ganze Zahl. (Da JavaScript in Millisekunden rechnet, wird t vor dem Generieren des Datums noch mit 1000 multipliziert.)
Hier wird der Einfachheit halber auf die Funktion getFullYear() der Klasse Date zurückgegriffen. Ähnliche Funktionen bestehen für andere Programmiersprachen auch und sind sonst oft durch Bibliotheken oder einfache Codeschnipsel ersetzbar.
Für den Rückgabewert (ich habe der Einfachheit halber hier einen Boolean gewählt, der für ein Schaltjahr true ist) war ich zu faul, den Pseudocode 1:1 zu übersetzen und habe seinen Sinn in den kompakteren logischen Ausdruck dort oben gepackt. Nach dem im Pseudocode beschriebenen Schema funktioniert es natürlich auch.
Wenn etwas an der Lösung unklar ist, frag bitte.
Diese Lösung bringt dir natürlich nichts, wenn du darauf aus warst, einen genauen Weg zu finden, um »mathematisch« über den Zeitstempel direkt ans Schaltjahr zu kommen. War das dein Ziel oder beantwortet der Rest meiner Antwort deine Frage?
Beitrag zuletzt geändert: 21.11.2016 22:21:54 von funnyweb -
funnyweb schrieb:
war ich zu faul, den Pseudocode 1:1 zu übersetzen
Faul?
Ist das nicht jeder ;)
funnyweb schrieb:
Diese Lösung bringt dir natürlich nichts, wenn du darauf aus warst, einen genauen Weg zu finden, um »mathematisch« über den Zeitstempel direkt ans Schaltjahr zu kommen. War das dein Ziel oder beantwortet der Rest meiner Antwort deine Frage?
Auch wenn du dir viel Mühe gemacht hast, war meine Frage eher auf dem "mathematischen" Bereich.
Denn erst das Jahr ausrechnen (mit oder ohne) wäre ja so ziemlich die einfachste Lösung .
Mich Interessiert aber
funnyweb schrieb:
über den Zeitstempel direkt ans Schaltjahr zu kommen.
Da es sich um Zeitstempel vom Anfang des Jahres (also glatte Zeitstempel) handelt sollte es eigentlich mathematisch/programmiertechnisch kein Problem darstellen.
Aber danke für die Antwort.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage