Merkwürdiges Datum-Rechen-Problem

JesusFreak777

Erfahrenes Mitglied
Hey Leute,

ich hab irgendwie Mist gebaut :eek: und das scheint jetzt ein Größeres Problem zu werden.

Ich bin gerade dabei mir einen Kalender zu bauen mit dem ich Wochenweise scrollen (momentan nur via Button) kann.

Soweit funktioniert das auch gut,… aber jetzt kommt ein für mich unerklärlicher Fehler:

Wenn ich die Kalenderwoche 43 erreiche (bei ein Paar Jahren getestet, vor allem 2010 und 2011) komme ich nicht mehr weiter. Zurück geht Komischerweise immer. ?active=2011-45 dann kann ich eine Kalenderwoche anspringen (die aktive Woche ist immer in der 2. Tabellenzeile)

Hier kann man das Programm mal einsehen:
http://0sb.de/script/calendar/calendar.php?active=2011-40

hier die stellen an denen es liegen könnte:

//die stelle an der ich meine Session setze und jeh nach parameter ne woche addiere oder subtrahiere:
PHP:
$s_day = 24*60*60;
$s_week = 7*$s_day;

if(!isset($_SESSION['active']))
{
	$_SESSION['active'] = $active;
}

if(isset($_GET['active']))
{
	$ac_arr = explode('-', $_SESSION['active']);
	$ac_kweek = $ac_arr[1];
	$ac_year = $ac_arr[0];

	if($_GET['active'] == "next")
	{ 
		$re_next = mondaykw($ac_kweek, $ac_year) + $s_week;
		$_SESSION['active'] = date('Y-W', $re_next);
	}
	elseif($_GET['active'] == "last")
	{
		$re_last = mondaykw($ac_kweek, $ac_year) - $s_week;
		$_SESSION['active'] = date('Y-W', $re_last);
	}
	else
	{
		$_SESSION['active'] = $_GET['active'];
	}
}

//die funktion (nicht von mir) die mir aus kalenderwoche montag macht (also date('d.m.Y', mondaykw(5,2011)); gibt 31.01.2011)
PHP:
function firstkw($jahr) {
	$erster = mktime(0,0,0,1,1,$jahr);
	$wtag = date('w',$erster);
	if ($wtag <= 4) {
		/**
		* Donnerstag oder kleiner: auf den Montag zurückrechnen.
		*/
		$montag = mktime(0,0,0,1,1-($wtag-1),$jahr);
	} else {
		/**
		* auf den Montag nach vorne rechnen.
		*/
		$montag = mktime(0,0,0,1,1+(7-$wtag+1),$jahr);
	}
	return $montag;
}

function mondaykw($kw,$jahr) {
	$firstmonday = firstkw($jahr);
	$mon_monat = date('m',$firstmonday);
	$mon_jahr = date('Y',$firstmonday);
	$mon_tage = date('d',$firstmonday);
	$tage = ($kw-1)*7;
	$mondaykw = mktime(0,0,0,$mon_monat,$mon_tage+$tage,$mon_jahr);
	return $mondaykw;
}

//mein Array mache ich so
PHP:
$ac_daylist_arr = array();
$lwmond = mondaykw($ac_kweek, $ac_year) - ($bv_week * $s_week);
for($lw = 0; $lw <= $bv_week + $af_week; $lw++)
{
	for($sw = 0; $sw <= 7 - 1; $sw++)
	{
		$ac_day = $lwmond + ($sw*$s_day);
		array_push($ac_daylist_arr, $ac_day);
	}
	$lwmond = $lwmond + $s_week;
}

die Ausgabe lass ich mal weg, an der liegt es nicht, selbst wenn ich nur das Array ]print_r]e komme ich nicht weiter ?active=next

evtl. kann mir ja jemand nen tipp geben (zumindest wo ich suchen muss.
vielen dank das das du überhaupt soviel angeschaut hast!
 
ich Held,

ich hab die Zeitumstellung nicht bedacht,... lässt man jeden tag ne Stunde später beginnen geht es auch,...

aber jeden tag ne stunde Später ist blöd und ungenau, vor allem weil noch eine Termin-Funktion nachfolgen soll,...
gibt es in PHP eine Funktion die sich mit Zeitumstellung auskennt?

edit:
und auch das Problem konnte ich mit
date('i') lösen.

immer wieder schön mit mir zu reden :) *wenigstens einer der sich meiner annimmt*
 
Zuletzt bearbeitet:
Zurück