Jahre jenseits 1971-2037
Jürgen K.
- php
0 Twilo0 Tom0 Twilo0 Viennamade0 Tom
0 Thomas Meinike0 Stefan Muenz
N'abend zusammen,
hat jemand mal kurz eine Formel oder einen Code zur Hand, wie man die Jahresdaten jenseits der Jahre 1971-2037 so in Jahre in diesem Zeitraum umwandeln kann, dass die Kalenderdaten (Wochentag des Jahresanfangs, Schaltjahr) stimmen?
strftime liefert hier nämlich nichts mehr zurück.
Vielen Dank,
Jürgen
Hallo,
hat jemand mal kurz eine Formel oder einen Code zur Hand, wie man die Jahresdaten jenseits der Jahre 1971-2037 so in Jahre in diesem Zeitraum umwandeln kann, dass die Kalenderdaten (Wochentag des Jahresanfangs, Schaltjahr) stimmen?
strftime liefert hier nämlich nichts mehr zurück.
das selbe Problem hab ich gerade auch
ich brauche die z.B. die Daten für 18xx
mfg
Twilo
Hello,
kurze eMail an die PTB in Braunschweig, und Ihr bekommt einen Linka uf ein Dossier, dass so ca.1600 Jahre zurückreicht. Alles davor ist nicht ordentlich recherchierbar. 1582 gab es die letze dokumentierte Datums- und Zeitbereinigung (Ausnahme Sommerzeit) und alles davor ist nicht so ganz klar.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
kurze eMail an die PTB in Braunschweig, [..]
PTB in Braunschweig?
mfg
Twilo
Hallo!
kurze eMail an die PTB in Braunschweig, [..]
PTB in Braunschweig?
http://www.ptb.de/ das weiß also wirklich ein jeder ;-)
Beste Grüße
Viennamade
Hello,
PTB in Braunschweig?
http://www.ptb.de/ das weiß also wirklich ein jeder ;-)
Lohnt sich auch mal, in Google "PTB Datum" einzugeben. Vielleicht liegt der passende Fachartikel schon im Netz.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
hat jemand mal kurz eine Formel oder einen Code zur Hand, wie man die Jahresdaten jenseits der Jahre 1971-2037 so in Jahre in diesem Zeitraum umwandeln kann, dass die Kalenderdaten (Wochentag des Jahresanfangs, Schaltjahr) stimmen?
Das Schaltjahr kann man dennoch langfristig mit checkdate() [http://de3.php.net/manual/en/function.checkdate.php] ermitteln und das funktioniert auch wie hier gezeigt: http://forum.de.selfhtml.org/archiv/2004/9/88836/#m529930.
MfG, Thomas
Hallo,
hat jemand mal kurz eine Formel oder einen Code zur Hand, wie man die Jahresdaten jenseits der Jahre 1971-2037 so in Jahre in diesem Zeitraum umwandeln kann, dass die Kalenderdaten (Wochentag des Jahresanfangs, Schaltjahr) stimmen?
Es gibt eine PEAR-Klasse dafuer. Ich hab selber auch mal irgendwann ein paar entsprechende Funktionen geschrieben, welche die noetigen Werte fuer solche Berechnungen liefern (ist halt weniger aufwaendig als die ganze PEAR-Klasse einzubinden). Die sind hier (Korrektheit natuerlich ohne Gewaehr *g*):
// ===========================================================
// Funktion: get_days_in_month()
// Parameter 'yyyy' und 'mm': Jahr und Monat, für die ein
// Ergebnis ermittelt werden soll. Das Jahr muss größer
// gleich 1800 sein.
// Zurückgegeben wird im Erfolgsfall ein Integer, der die
// Anzahl der Tage im Monat angibt.
// Im Fehlerfall wird boolean false zurückgegeben.
// ===========================================================
function get_days_in_month($yyyy, $mm) {
if((int)$yyyy < 1800)
return false;
if((int)$mm < 1 or (int)$mm > 12)
return false;
return (int)$mm == 2 ? ((int)$yyyy % 4 ? 28 : ((int)$yyyy % 100 ? 29 : ((int)$yyyy % 400 ? 28 : 29))) : (((int)$mm - 1) % 7 % 2 ? 30 : 31);
}
// ===========================================================
// Funktion: get_days_in_year()
// Parameter 'yyyy': Jahr, für das ein ermittelt werden soll.
// Das Jahr muss größer gleich 1800 sein.
// Zurückgegeben wird im Erfolgsfall ein Integer, der
// entweder 365 oder 366 beträgt
// Im Fehlerfall wird boolean false zurückgegeben.
// ===========================================================
function get_days_in_year($yyyy) {
if((int)$yyyy < 1800)
return false;
return(337 + get_days_in_month($yyyy, 2));
}
// ===========================================================
// Funktion: get_day_of_week()
// Parameter 'yyyy', 'mm' und 'dd': Jahr, Monat und Tag, für die
// ein Ergebnis ermittelt werden soll. Das Jahr muss größer
// gleich 1800 sein.
// Zurückgegeben wird im Erfolgsfall ein Integer, der den
// Wochentag anzeigt: 0 = Sonntag, 1 = Montag ... 6 = Samstag.
// Im Fehlerfall wird boolean false zurückgegeben.
// ===========================================================
function get_day_of_week($yyyy, $mm, $dd) {
if((int)$yyyy < 1800)
return false;
if((int)$mm < 1 or (int)$mm > 12)
return false;
if((int)$dd < 1 or (int)$dd > get_days_in_month($yyyy, $mm))
return false;
$t = array(0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4);
if($mm < 3)
$yyyy -= 1;
return ((int)$yyyy + (int)($yyyy/4) - (int)($yyyy/100) + (int)($yyyy/400) + $t[(int)$mm-1] + (int)$dd) % 7;
}
// ===========================================================
// Funktion: get_day_of_year()
// Parameter 'yyyy', 'mm' und 'dd': Jahr, Monat und Tag, für die
// ein Ergebnis ermittelt werden soll. Das Jahr muss größer
// gleich 1800 sein.
// Zurückgegeben wird im Erfolgsfall ein Integer, der die
// Tageszahl bezeichnet.
// Im Fehlerfall wird boolean false zurückgegeben.
// ===========================================================
function get_day_of_year($yyyy, $mm, $dd) {
if((int)$yyyy < 1800)
return false;
if((int)$mm < 1 or (int)$mm > 12)
return false;
if((int)$dd < 1 or (int)$dd > get_days_in_month($yyyy, $mm))
return false;
$doy = 0;
for($i = 0; $i < $mm; $i++)
$doy += get_days_in_month($yyyy, $i);
$doy += $dd;
return($doy);
}
Diese Funktionen arbeiten rein mit Kalenderlogik und basieren nicht auf dem Unix-Zeitstempel. 1800 wurde in diesen Funktionen als fruehest moegliches Jahr festgelegt, weil die Kalenderreform eine ziemlich lange Geschichte war und sich nur zoegerlich durchsetzte. 1800 hatten noch laengst nicht alle Laender den gregorianischen Kalender. Sinnvoll waere es wahrscheinlich auch, eine Obergrenze zu bestimmen. Denn so weit ich mal gelesen habe, sollen im Jahr 2700 oder 2800 erstmals der gregorianische und der orthodoxe Kalender voneinander abweichen, da sie mit einer etwas unterschiedlichen Logik zur Sonnenjahrkorrektur arbeiten, die aber dann zum ersten mal zu einem Tag Unterschied fuehrt.
viele Gruesse
Stefan Muenz
Danke vielmals, funktioniert wunderbar.
Schöne Grüße,
Jürgen