am timestamp erkennen ob schaltjahr ist

S

Schneemann

Routinier
erstma, ich weiß net so ob das hier reinpasst, aber es handelt sich ja um UNIX-timestamps und als katergorien-name stand da auch "UNIX und _sonstiges_". naja egal.

Nehmen wir an wir haben einen timestamp wie z.B "1159215119". Wie erkenn ich daran ob es ein schaltjar ist oder nicht, OHNE das jahr auszurechnen! (wer das jahr aus dem timestamp ausrechnen will, wird herausfinden dass man dazu die tage im jahr braucht. Und die Tage im Jahr sind vom Jahr abhängig).

Um für machne Fragen es leicheter zu machen:
ich brauch das weil ich hier ein paar funktionen schreibe die das arbeiten mit der zeit erleichtern sollen. Also ich hab schon die funktionen (namen wie in PHP) mktime() und time() geschrieben. nur noch date() fehlt mir.
 
Nehmen wir an wir haben einen timestamp wie z.B "1159215119". Wie erkenn ich daran ob es ein schaltjar ist oder nicht, OHNE das jahr auszurechnen! (wer das jahr aus dem timestamp ausrechnen will, wird herausfinden dass man dazu die tage im jahr braucht. Und die Tage im Jahr sind vom Jahr abhängig).
Hallo,

Die passende Zeit ist 22:11:59 Uhr, 25.09.2006. :D

Gruß Lumpi
 
Hallo
Welches date steht dir zur Verfügung?
Bei GNU date gibt es %j, was den Tag im Jahr ausgibt.
In Kombination mit der Option -d kannst du so leicht feststellen ob es ein Schaltjahr ist.
Hast du kein GNU date, kannst du mit der Shell die Jahreszahl über die Operation % (MOD) den Returnwert auf 0 Testen.
Das Ergebnis muss durch 4 teilbar sein.

Gruß Wolfgang
 
das problem ist dass ich die funktionen systemunabhänging schreiben will. also GNU-date kann ich dann nicht verwenden.

und das mit dem durch 4 teilbar:
Klar weiß ich wie man anhand einer jahreszahl errechnet ob es ein schaltjahr ist. Das Problem ist nur, dass ich erstmal das jahr wissen muss und das ist (wegen den tagen im jahr) vom schaltjahr abhängig.

PS: danke für den typ GNU-date, kann ich ma in den sourcecode reinschauen, wie die das gelöst haben
 
Hallo,

Mal so aus Neugier
Wozu verwendest / benötigst du timestamp?
Timestamp gilt doch nur bis 2029?
Was machst du danach?
Ist DATETIME nicht günstiger?

Gruß Lumpi
 
die 32-bit-timestamps gehen nur bis 2029, aber die 64bit reichen noch n bissl länger. das problem ist aber auch nur bei hardware-naher programmierung. Da ich ein mordernes basic benutze denke ich dass doch noch länger reicht.

Also ich programmiere ein kleines virtuelles betriebssystem, dass später mal auf meiner PlayStation2 laufen soll, und jetzt will ich ein paar gute Zeit-Funktionen haben.
 
also hab erst ma versucht das in einem text zu schreiben aber besser ich kopiere einfach ma den code hier hin:

Code:
do
    dpy = 365
    if (mod(year,400)=0 or (mod(year,4)=0 and mod(year,100)<>0)) dpy = 366
    s = s-60*60*24*dpy
    if (s<0) break
    y = y+1
loop
year = y
leapyear = 0
if (dpy=366) leapyear=1
ist halt basic...
 

Ähnliche Themen

Server-Monitoring mit RRDTool

Zurück
Oben