jahrestag + jahr ==> Datum?
Sorgenkind Mech
- php
naabend
ich hab mal wieder ne frage, die so in meinem kopf schwirrt
ich habe nämlich einen terminkalender geschrieben, schon ein bissl her
hat allerdings einen fehler, nämlich, dass wenn sonntag ist, der terminkalender die nächste woche beim start anzeigt
aber egal
jetz will ich das ding korrigieren, und dachte daran, ihn komplett neu zu scheiben
das ginge rel leicht, wenn folgedes geht:
ich habe den tag des jahres, bsp 120
und ich habe das jahr, bsp 2003
so, kann man aus diesen beiden informationen auf das datum dieses tages in diesem jahr schließen per PHP, wenn ja, wie?
dankend
gruß
ich habe den tag des jahres, bsp 120
und ich habe das jahr, bsp 2003
so, kann man aus diesen beiden informationen auf das datum dieses tages in diesem jahr schließen per PHP, wenn ja, wie?
Nun, beschäftige Dich doch mal mit den Regeln des Gregorianischen Kalenders:
"Im Gregorianischen Kalender (ab dem 15.Oktober 1582) ist die Definition folgendermaßen: Alle 4 Jahre ein Schaltjahr, alle vollen 100 Jahre nicht, volle 400 Jahre jedoch wieder. Dies bedeutet, der Gregorianische Kalender hat 97 Schaltjahre in 400 Jahren."
(http://www.kalenderlexikon.de/Kalender/Begriffe/CalcSchaltjahr.htm)
Jetzt musst Du nur noch den Wochentag des 1. Jänners herausbekommen:
http://home.nordwest.net/hgm/kalender/kal-63.htm
Liefert die Berechnungen in Javascript. Kann Du ja sicher umprogrammieren.
Gefunden haich das alle mit dem Google...
aaaaaaaaaaaach du meine SCH-güte
nabend
ich dachte eigentlich, dass es dafür 2/3 kleine zeilen gibt, mit denen ich das herauskriege ;(
naja, zur not werd ich das wohl machen müssen
mir hat gerade jemand die lösung verraten, und da das forum ja auch ne art hilfe ist, hier die lösung:
es steht nämlich nirgens in irgenteiner doku, dass man bei mktime auch höhere werte einsetzen kann, als theoretisch möglich (z.B. als tag 250)
das bedeutet, dass man einfach den monat januar nimmt, und als tag den tag des jahres nimmt
somit ergibt date('z', mktime(0,0,0,1,32,2003))=31
da ja die jahrestage bei 0 anfangen zu zählen
also bekommt man durch änderung des ersten argumentes an die gewünschten informationen
gruß
Hallo!
das ginge rel leicht, wenn folgedes geht:
ich habe den tag des jahres, bsp 120
und ich habe das jahr, bsp 2003
so, kann man aus diesen beiden informationen auf das datum dieses tages in diesem jahr schließen per PHP, wenn ja, wie?
Nicht ganz elegant...
Du schreibst eine MySQL-Tabelle mit allen Daten von z.B. 1.1.1990 bis 31.12.2020. Der Zeitraum kann natürlich kürzer sein, keine Ahnung was für Deine Anwendung nötig ist. Zu jedem Datum schreibst Du auch gleich den Tag des Jahres. Bei meinem Beispiel sind das ~ 11.000 Datensätze, also nicht wirklich viel.
Mit checkdate() testet Du vor dem INSERT, ob es das Datum wirklich gibt.
for(j=1999;j<=2020;$j++)
{
for(m=1;m<=12;$m++)
{
for(t=1;t<=31;$t++)
{
if(checkdate($m, $t, $j))
{
INSERT...
}
}
}
}
Mit einer SQL-Abfrage bekommst Du dann ganz einfach das Datum raus.
SELECT datum FROM tagjahr WHERE YEAR(datum)=2002 AND tag=354;
MfG, André Laugks
L-Andre @ gmx.de
WAS???
nabend
das wäre aber mehr als unpaktisch
1. gäbe es dann ein limit
2. brauch man extra abfragen
3. hab ich keine lange weile ;)
is zwar durchaus möglich, aber sih dir mal mein thread "einfachste Lösung" an .........
PS: dieser thread soll keine beleidigung sein!
gruß
Hallo!
das wäre aber mehr als unpaktisch
Der halb auch: "Nicht ganz elegant..."
- gäbe es dann ein limit
Das ist ja wohl ohne Proble zu regeln.
- brauch man extra abfragen
Abfrage, nicht Abfragen. Wenn Du Deine Termine in einer MySQL verwaltest, könnte man das sogar mit einem JOIN verbinden.
- hab ich keine lange weile ;)
Du muß Sie ja nicht mit der Hand eintragen. Das Erstellen der 30 Jahre braucht ca. 5 Sekunden. Für einen Artkel über Datumsberechnungen hat das erstellen solche einer Tabelle (Testtabelle) 3 Sekunden gedauert.
is zwar durchaus möglich, aber sih dir mal mein thread "einfachste Lösung" an .........
Während Du den geschrieben hast, habe ich meinen geschrieben.
MfG, André Laugks
L-Andre@ gmx.de