Datum(s) eines Jahres berechnen

yami2

Grünschnabel
Hallo,

ich sage schon im Vorwege: Ich habe mir schon mehrere PHP-Kalender von OpenSource Seiten angeschaut, werde aber nicht schlau daraus.

Was ich möchte:
Ich möchte in einem dragdownmenu Zeiträume anzeigen lassen von einem Jahr. Die Zeiträume sollen immer von Montag-Donnerstag sein, aber nicht als Montag-Donnerstag angezeigt werden, sondern mit dem passendem Datum(z.b. 1.1.2008-4.1.2008). Es sollen alle Zeiträume von dem Jahr angezeigt werden, welches gerade ist. Wenn ein Datum bereits begonnen hat bzw. vorbei ist soll es nichtmehr im dragdownmenu angezeigt werden. Natürlich kann ich die Zeiträume auch raussuchen und per Hand eintragen, jedoch will ich das nicht jedes Jahr erneut machen.
 
hallo,

ich bin jetzt soweit, dass alle montage und donnerstage von einem jahr angezeigt werden. jedoch alles untereinander. ich weiß nicht wie man die zwei for-schleifen verbindet, so dass z.b. 14.1.08-17.1.08 angezeigt wird. das brauche ich um es nachher in ein dropdownmenu zu machen. ein weiteres problem ist, dass der erste donnerstag des jahres irgendwie weg muss. ansonsten stimmen die zeiträume nicht.

PHP:
<?php
$jahr=2008;
$tag=1;
$tag2=4;

$tag -= date('w',($x3=mktime(0,0,0,1,1,$jahr)));
$tag2 -= date('w',($x5=mktime(0,0,0,1,1,$jahr)));
$x3 += ($tag += ($tag < 0) ? 7:0) * 86400;
$x5 += ($tag2 += ($tag2 < 0) ? 7:0) * 86400;
$x4 = mktime(0,0,0,1,1,$jahr + 1);

for($i1=$x3;$i1<$x4;$i1+=(86400*7)){
echo date('d.m.Y',$i1).'<br>';
}
for($i12=$x5;$i12<$x4;$i12+=(86400*7)){
echo date('d.m.Y',$i12).'<br>';
}
?>
 
Zuletzt bearbeitet:
PHP:
<?php
$jahr=2008;
$tag=1;
$tag2=4;

$tag -= date('w',($x3=mktime(0,0,0,1,1,$jahr)));
$tag2 -= date('w',($x5=mktime(0,0,0,1,1,$jahr)));
$x3 += ($tag += ($tag < 0) ? 7:0) * 86400;
$x5 += ($tag2 += ($tag2 < 0) ? 7:0) * 86400;
$x4 = mktime(0,0,0,1,1,$jahr + 1);

$i12 = $x5;

for($i1 = $x3; $i1 < $x4; $i1 += (86400*7))
{
  $i12 += (86400*7);
  print date('d.m.Y', $i1) .' bis '. date('d.m.Y', $i12) .'<br>';
}
?>
Wie wäre es so?
 
ja das hat ganz gut geklappt!! mhhh und wie schafft man es das die wochen die bereits vergangen sind nichtmehr angezeigt werden? hab schon versucht die bedinung zu verändern aber das klappt nicht wirklich
 
Das geht auch etwas einfacher:
PHP:
for( $i=time()+86400; date('w', $i)!=1; $i+=86400 );
for( $doy=date('z', $i); $doy+3<365; $doy+=7, $i+=86400*7 ) {
  	echo date('d.m.Y', $i).' bis '.date('d.m.Y', $i+86400*3).'<br>';
}
 
Hallo,

will nicht extra nen neuen Thread eröffnen. Hab die Daten jetzt in eine MYSQL eingetragen:

z.B.
07.04.2008-10.04.2008
02.06.2008-05.06.2008
11.02.2008-14.02.2008
24.03.2008-27.03.2008
26.05.2008-29.05.2008

Jetzt möchte ich die beim auslesen sortieren... hab schon "ORDER BY `datum` > CURDATE( )" probiert, geht aber nicht. anscheinend ist das Problem, dass das datum nicht "echt" ist. Keine Ahnung.
 
Speichere nur jeweils den Startpunkt der Zeiträume als Datum. Den Rest kannst dann ja berechnen.
 
Speichere nur jeweils den Startpunkt der Zeiträume als Datum. Den Rest kannst dann ja berechnen.

hab ich gemacht, trotzdem sortiert er nur nach der ersten zahl. liegt wohl daran das der typ nicht date sondern varchar ist... sortieren geht anscheinend nur mit dem englischen date. gibs nicht ne andere möglichkeit?
 
Zurück