Avatar billede atheist Nybegynder
29. maj 2004 - 15:54 Der er 12 kommentarer og
1 løsning

beregning af dato i måned med skudår

Jeg har lavet en funktion der skal lave en kalender som vi kender den fra windows, hvor man også skal kunne bladre mellem månederne, problemet opstår når jeg kommer til februar måned i et skudår... Den får lige flyttet det hele en uges tid, se evt.  www.gregersboye.dk/Kalender.php og klik frem til februar måned, i vil ved selvsyn se den flipper...

Koden jeg har er:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html>
<head>
    <title>Kalender</title>
<meta name="Generator" content="Stone's WebWriter 4" />
</head>
<body bgcolor="#415376" text="#FF8800" link="#FF8800" vlink="#FF8800" alink="#FF8800">


<?
$month = $_REQUEST["month"];
$aar = $_REQUEST["aar"];
$maaned = array(" ","Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec");


$ar=$aar;
if ($aar==""){
    $ar = date('Y', time());
}
    if ($month==""){
$month = date('n', time());
}
$prev=$month-1;
$naar="&aar=$ar";
$paar="&aar=$ar";

if ($prev =="0"){
    $prev = "12";
    $ar=$ar-1;
    $paar = "&aar=$ar";
}
$this = $maaned[$month];
$next=$month+1;
if ($next==13){
    $next=1;
    $ar = $ar+1;
    $naar = "&aar=$ar";
}

$days=date("t", mktime(0, 0, 0, $month, 1, $aar));

$b =1;

$next = "<a href='Kalender.php?month=$next$naar'>$maaned[$next]</a>";
$prev = "<a href='Kalender.php?month=$prev$paar'>$maaned[$prev]</a>";

echo "
<table border='0' cellspacing='3'>

<tr>
    <td align='center' colspan='7'>$aar</td>
</tr>
<tr>   
    <td align='center' colspan='7'>$prev&nbsp;&nbsp;|&nbsp;&nbsp;$this&nbsp;&nbsp;|&nbsp;&nbsp;$next</td>
</tr>
<tr>
    <td align='center'>M</td>
    <td align='center'>T</td>
    <td align='center'>O</td>
    <td align='center'>T</td>
    <td align='center'>F</td>
    <td align='center'>L</td>
    <td align='center'>S</td>

</tr><tr>";

$c=0;
$d=date("w", mktime(0, 0, 0, $month, 1, $aar));

for ($a=1;$a<$d;$a++){
    echo "<td>&nbsp;</td>";
    $b++;
}
for ($a=1;$a<=$days;$a++){
    $mmand = date('n', time());
    $dag = date('j', time());
    $ear = date('Y', time());
    if ($dag==$a && $mmand==$month && $aar == $ear){
        echo "<td align='center' style='background-color:#c0c0c0;color:#808080;'>$a</td>";
    }
    else{
        echo "<td align='center' style='background-color:#eeeeee;color:#000000;'>$a</td>";
    }
    if ($b==7){
        echo "</tr><tr>";
        $b=0;
    }
    $b++;
}

echo "</tr></table>";

?>
</body>
</html>
Avatar billede technodance.dk Nybegynder
29. maj 2004 - 16:26 #1
her er den god nok
Avatar billede atheist Nybegynder
29. maj 2004 - 16:34 #2
også februar måned? Den 1 feb 2004 ER en søndag, men kalenderen viser at det er en mandag...
Avatar billede stefmeister Nybegynder
29. maj 2004 - 16:36 #3
Når jeg ser den så er der 29 dage i ferbruar 2004, og 28 dage i ferbruar 2005, og det er da rigtigt nok, det skal den jo.
Avatar billede atheist Nybegynder
29. maj 2004 - 16:39 #4
ja, men læg mærke til at den viser den første februar '04 som Mandag, når det i virkeligheden er Søndag...
Avatar billede stefmeister Nybegynder
29. maj 2004 - 16:39 #5
hmm.. kan godt se at den lige har fået smidt den 1. ind på mandag hvor det skulle have været søndag.
Avatar billede stefmeister Nybegynder
29. maj 2004 - 16:41 #6
mystisk det er KUN den der er forkert, hvis man går frem i kalenderen så passer datoerne med ugedagene, også Februar 2005, den passer også.
Avatar billede atheist Nybegynder
29. maj 2004 - 16:46 #7
nemmerlig, og hvad der er endnu mere strange: Hvis man går frem til feb/2008 (http://www.gregersboye.dk/Kalender.php?month=2&aar=2008) derogså er et skudår... Gør den det rigtigt nok...
Avatar billede stefmeister Nybegynder
29. maj 2004 - 16:51 #8
Det er VIRKELIG mystisk.
Avatar billede technodance.dk Nybegynder
29. maj 2004 - 17:12 #9
også her fra

Det er VIRKELIG mystisk.
Avatar billede atheist Nybegynder
29. maj 2004 - 17:14 #10
Det er jeg klar over, nogen der har forslag til hvad der går galt? Ikke nok med det er mystisk, det er også dybt irriterende...
Avatar billede stefmeister Nybegynder
29. maj 2004 - 17:30 #11
Har sku ikke lige nogen god ide til hvad der kan være galt. Det var noget andet hvis resten af datoerne havde været forkerte, men det er de jo ikke. Det er KUN den måned hvor de er rykket en dag.
Avatar billede atheist Nybegynder
29. maj 2004 - 18:39 #12
Har selv løst problemet, opdagede at en søndag har pladsen 0 og når jeg beder den om at indrykke det antal dage, sker der jo intet...
for ($a=1;$a<$d;$a++){
    echo "<td>&nbsp;</td>";
    $b++;
}
Hvis $d=0...

løsningen er at indsætte:
if ($d==0){
$d=7;
}
lige under

$d=date("w", mktime(0, 0, 0, $month, 1, $aar));
Så får den gjort det rigtigt (http://www.gregersboye.dk/Kalender.php?month=2&aar=2004)
Avatar billede atheist Nybegynder
29. maj 2004 - 18:40 #13
snupper lige selv point'sene ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester