webForumDet fria alternativet

Kalender visar fel månad

PHP

3 svar · 275 visningar · startad av addeweb

Medlem sedan jan. 2004216 inlägg
Frågan#1

Jag har gjort iordning en kalender med administrationssida. I kalendern har jag också lagt in knappar för föregående och nästa månad. Till min fasa upptäckte jag att kalendern har hoppat över en månad, oktober istället för september under sista timmen före kl 00.00 och sista dagen av augusti månad. Samma sak gällde också november som blev december istället osv. Efter 00-slaget blev kalendern återigen normal igen. Jag har försökt hitta någon lösning men inte lyckats ännu. Kan problemet ha med sommartiden att göra?

Någon som har haft liknande problem kan vara vänligen berätta hur problemet har lösts?

Medlem sedan aug. 20002 975 inlägg
#2

Hur har du gjort som ger problem ?

För att få nästa månad om man utgår från idag:

$next_month = date("n", strtotime("+1 month"));

För att få nästa månad om man utgår från ett visst datum:

$next_month = date("n", strtotime("+1 month 2005-03-22"));
Medlem sedan jan. 2004216 inlägg
#3

Här är vad jag har gjort:


// GET-variabler
	$day = $_GET['day']; 
	$month = $_GET['month']; 
	$year = $_GET['year']; 
		
	// Om inga värden finns i GET-variablerna, då används dagens datum istället. 
	if($day == "")
		$day = date("j");
		
	if($month == "")
		$month = date("n"); 
		
	if($year == "")
		$year = date("Y"); 

// Månadsvisning med vänster- och högerknappar		
echo '<table cellpadding="0" cellspacing="0" border="0"
 style="width: 100%; margin-bottom: 10px">
<tr><td style="width: 30%; text-align: right">
<input type="button" value=" << " 
onclick="'.goLastMonth( $month, $year ).'" style="width: 50px" title="'
.getMonthName($day, ($month-1), $year).'" />
</td>
<td style="width: 40%; text-align: center">
<b style="font-size: 14px">'
.getMonthName($day, $month, $year).' '.$year.'</b>
</td><td style="width: 30%">
<input type="button" value=" >> " 
onclick="'.goNextMonth( $month, $year ).'" style="width: 50px" title="'
.getMonthName($day, ($month+1), $year).'" /></td></tr>
</table>'; 

// Används till kalendern för månadsvis visning av händelser
function goLastMonth( $month, $year ){ 
	
// Om månaden är januari, minska året.
if($month == 1)
{
	--$year; 
	$month = 13;
}
return 'document.location=\''.$_SERVER['PHP_SELF'].'?
p=calendar&month='.($month-1).'&year='.$year.'\''; 
}

// Används till kalendern för månadsvis visning av händelser
function goNextMonth( $month, $year ){
	
// Om månaden är december, öka året
if($month == 12){
	++$year; 
	$month = 0; 
}
return 'document.location=\''.$_SERVER['PHP_SELF'].'?
p=calendar&month='.($month+1).'&year='.$year.'\''; 
}

// Funktion med tre parametrar för att ta fram månadsnamn.
// Används till kalendern.
function getMonthName( $day, $month, $year ){ 

	$monthNr = date("n", mktime( 0, 0, 0, $month, $day, $year)); 

    $monthNames = array( 
        1 => 'Januari', 'Februari', 'Mars', 'April', 'Maj', 'Juni', 
        'Juli', 'Augusti', 'September', 'Oktober', 'November', 'December'); 
		
    return $monthNames[$monthNr]; 
}
Medlem sedan jan. 2004216 inlägg
#4

Problemet med fel månad är numera löst.

// Används till kalendern för månadsvis visning av händelser
function goNextMonth( $month, $year )
{
   list($year, $month) = explode("-", date("Y-n", strtotime("+1 month $year-$month-01")));    
 
   return "document.location.href='".$_SERVER['PHP_SELF']."?p=calendar&month=$month&year=$year'"; 
}
258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)