Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di naverit
    Registrato dal
    Apr 2002
    Messaggi
    460

    Problema ostico con un calendario

    Il calendario qui sotto presenta un problema ostico!!!

    ad esempio ottobre 2007 si vede 2 volte domenica 28
    ad ottobre 2008 si vede 2 volte domenica 26

    non capisco dov'è l'errore!!!


    <?
    define("ADAY",(60*60*24));

    if(!checkdate($month,1,$year)){
    $nowarray=getdate();
    echo".$nowarray";
    $month= $nowarray[mon];
    $year= $nowarray[year];
    }

    $start=mktime(0,0,0,$month,1,$year);
    $firstdayarray=getdate($start);
    ?>

    <html>
    <body>
    <div align="center">

    <form action="<?echo $PHP_SELF?>" method="post">
    <select name="month">
    <?
    $months=Array("Gennaio","Febbraio","Marzo","Aprile ","Maggio","Giugno","Luglio","Agosto","Settembre", "Ottobre","Novembre","Dicembre");
    for($x=1;$x<=count($months);$x++){
    echo"<option value=\"$x\"";
    if($x==$month)echo" selected";
    echo ">".$months[$x-1]."</option>";
    }
    ?>
    </select>
    <select name="year">
    <?
    $yy=date("Y");
    $yy1=$yy-1;
    $yy2=$yy+3;
    echo "<option value=\"$yy\"> - $yy - </option>";
    for($x=$yy1;$x<=$yy2;$x++){
    echo "<option value=\"$x\">$x</option>";
    }
    ?>
    </select>
    <input type="submit" value="ok">
    </form>

    <?echo "$firstdayarray[month] $year
    ";?>


    <?

    echo"<table width=100% border=1>";
    echo"<tr>";

    for($count=0;$count<(31);$count++)
    {
    $dayarray=getdate($start);
    $quale=$dayarray[weekday];
    echo"<td valign=\"top\" width=\"40\"";
    //mostra colore rosso per sabato e dom
    if($quale=="Sunday" || $quale=="Saturday")echo"bgcolor=\"#FF9999\"";
    else echo"bgcolor=\"#cecece\"";
    echo">";

    if($quale=="Monday")echo"Lun";
    if($quale=="Tuesday")echo"Mar";
    if($quale=="Wednesday")echo"Merc";
    if($quale=="Thursday")echo"Gio";
    if($quale=="Friday")echo"Ven";
    if($quale=="Saturday")echo"Sab";
    if($quale=="Sunday")echo"Dom";

    echo "
    $dayarray[mday]";

    if(strlen($dayarray[mday])==1)$dayarray[mday]="0".$dayarray[mday];

    echo"</td>";
    $start+=ADAY;
    //echo "-".$start+=ADAY;
    }

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

    </div>
    </body>
    </html>
    Ars longa...vita brevis.

  2. #2
    Utente di HTML.it L'avatar di naverit
    Registrato dal
    Apr 2002
    Messaggi
    460
    ho provato a fare così ma non va:

    define("ADAY",(61*60*24));

    Ars longa...vita brevis.

  3. #3
    Utente di HTML.it L'avatar di naverit
    Registrato dal
    Apr 2002
    Messaggi
    460
    credo che il problema sia proprio qui:

    define("ADAY",(60*60*24));


    60 secondi (in un minuto) x 60 minuti (in un'ora) x 24 ore (in un giorno)

    esi accumulano delle imprecisioni.... che nel mese di ottobre si trasformano puntualmente in un giorno in più!!!

    come posso ovviare a questo problema?

    non posso cambiare facilmente questo calendario perchè fa parte di un programma abbastanza complesso da modificare!!!

    help me please
    Ars longa...vita brevis.

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Non ho guardato tutto lo script perché è troppo complicato, ma molto probabilmente il tuo problema è legato all'ora legale.
    Lo scompenso è dovuto al fatto che durante l'anno c'è un giorno che dura 23 ore e uno che ne dura 25; in particolare, a fine ottobre l'orologio va indietro di un'ora, e quindi se a un certo punto è mezzanotte fra sabato e domenica, 24 ore dopo sono le 23 sempre della domenica. Per questo ti ritrovi il giorno due volte.

    Evita di usare la mezzanotte come orario di riferimento nella giornata; sposta tutto di 12 ore e il problema dovrebbe sparire.

  5. #5
    Utente di HTML.it L'avatar di naverit
    Registrato dal
    Apr 2002
    Messaggi
    460
    grazie!

    ma come faccio a spostare tutto di 12 ore?

    basta intervenire su questa riga?:
    define("ADAY",(60*60*24));

    e se sposto tutto di 2 ore anzichè 12?

    comunque sono preoccupato!! il calendario lo uso per le prenonazioni di un hotel ... non vorrei falsare i dati!

    Ars longa...vita brevis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.