Newsgroup: it.comp.www.php
Titolo: problemi con le date

ri-salve.. ho un problema con le date , ovvero:
dato un periodo di anni compreso tra  1990-2011
devo affittare una casa per un periodo(che rientri comunque nel periodo 
sopraccitato)
ad espempio affitto la casa nel periodo:
periodo inizio 01/01/2002
periodo fine 10/01/2004
vorrei che lo script mi dica  esattamente quanti giorni
per ciascun hanno (dal 1990 al 2011) la casa è stata affittata:
(per l'esempio sopraccitato sarebbe):
1990=0
1991=0
199....
2002=365
2003=365
2004=10
2005=0
200...
2011=0
grazie per il sempre prezioso aiuto 

 ha scritto nel messaggio 
news:C1R5f.23138$Pe2.4...@twister2.libero.it...


 per ciascun hanno (dal 1990 al 2011) la casa h stata affittata:
E sufficiente fare un ciclo dal 1990 al 2011 usi mktime, - (meno)
 e qualche if
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

sarą che io sono noob ma a me non viene semplice pensare al processo logico 
per risolvere lo script, potresti darmi qualche indizio in + ..magari un 
picco ridotto esempio please...grazie ancora in ogni caso per il tuo 
interessamento.^^
"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio 
news:xwR5f.23187$Pe2.4...@twister2.libero.it...


 sarà che io sono noob ma a me non viene semplice pensare al processo 


totale (diverso dal periodo scelto da noi).
Scusa se m'intrometto ma, come anche tu hai detto, usando qualche
ciclo (pochi, solo uno) si puo' fare tutto in poche righe ed e',
secondo me, di molto piu' leggibile.
Eccoti l'esempio (non testato molto ma dovrebbe essere ok). Se
qualcosa non e' chiaro fammi sapere.
bye
<?php
  $PeriodoInizio = mktime(0,0,0, 10, 22, 1994);
  $PeriodoFine = mktime(0,0,0, 12, 28, 1997);
  //
  //
  //
  $AnnoInizio = strftime("%Y", $PeriodoInizio);
  $AnnoFine = strftime("%Y", $PeriodoFine);
  $TotaleGiorni = 0;
  echo "<br><font face=Verdana size=5><b><i> Calcolo dei giorni
compresi tra il ".
    strftime("%d %b %Y", $PeriodoInizio). " e il ".
    strftime("%d %b %Y", $PeriodoFine). " suddivisi per
anno.</i></b><br>";
    for ($Anno = 1990; $Anno < 2012; $Anno++)
      {
      switch ($Anno)
        {
        case ($Anno < $AnnoInizio): // antecedente all'inizio
        case ($Anno > $AnnoFine):   // successivo alla fine
          $Giorni = 0;
          break;
        case (($Anno > $AnnoInizio) && ($Anno < $AnnoFine)):    //
Anno completo
          $Giorni = 365 + ($Anno % 4 == 0 && ( $Anno % 100 > 0 ||
$Anno % 400 == 0 ));
          break;
        case ($Anno == $AnnoInizio) :
          $Giorni = strftime("%j", mktime(0, 0, 0, 12, 31, $Anno) -
$PeriodoInizio);
          break;
        case ($Anno == $AnnoFine) :
          $Giorni = strftime("%j", $PeriodoFine - mktime(0, 0, 0, 1,
1, $Anno));
          break;
        default:
          echo "<br><br> Anno = $Anno. Cosa ci faccio qui ?";
          die();
          break;
        }
        echo "<br><font face=Verdana size=4> $Anno - ".
sprintf("%03d", $Giorni);
        $TotaleGiorni += $Giorni;
        }
    echo "<br><font face=Verdana size=5><b> Totale Giorni :
$TotaleGiorni";
?>

 ha scritto nel messaggio 
news:a39ll1pir9d46b4dq...@4ax.com...


 ha scritto nel messaggio 
news:eyF6f.26628$Pe2.5...@twister2.libero.it...


$Giorni = 365 + ($Anno % 4 == 0 && ( $Anno % 100 > 0 || $Anno % 400 == 0 ));
La riga e' rubacchiata da uno degli esempi che trovi nella funzione ma
direi che e' usata dappertutto (vedi
http://www.phpriot.com/d/code/date-time/leap-year/
). Questo riga serve
a calcolare quanti giorni ci sono in un anno tenendo conto anche degli
anni bisestili. Se e' complessa e' perche' non basta dividere per
quattro per vedere se e' bisestile ma bisogna considerare anche che
gli anni divisibili per 100 sono bisestili solo se sono anche
divisibile per 400. Quindi : 2000 era bisestile (divisibile per 4 e
per 400), il 1900 (e il 1800, 1700, 2100, 2200, etc..) no in quanto e'
divisibile per 4 ma lo e' anche per 100 e non lo e' per 400. In
pratica, ogni 400 anni ci sono 97 anni bisestile.
Come leggere l'istruzione :
$Giorni = 365 +
In un anno ci sono almeno 365 giorni ai quali andiamo ad aggiungere 1
o 0 (il risultato del confronto) se
($Anno % 4 == 0 &&
L'anno e' divisibile per 4 E
( $Anno % 100 > 0 || 
Non e' un multiplo di 100 OPPURE
$Anno % 400 == 0 ));
E' un multiplo di 400.
Un altro modo per sapere quanti giorni ci sono in un anno potrebbe
essere :
$Giorni = strftime("%j", mktime(0, 0, 0, 12, 31, $Anno));
pero' hai la limitazione di mktime che funziona solo dal 1970 in poi.
ciao

 ha scritto nel messaggio 
news:ebfml15ddhff7kk9j...@4ax.com...


 On Sun, 23 Oct 2005 07:01:41 GMT, "totoscarantino"
