Visualizzazione dei risultati da 1 a 10 su 10

Discussione: intervallo data

  1. #1
    Utente di HTML.it L'avatar di gohnzo
    Registrato dal
    Mar 2009
    Messaggi
    13

    Help intervallo data

    Salve! Espongo subito il problema.
    Un utente una volta inserite due date (ad esempio 1 gennaio 2009 e 1 marzo2009) potrà visualizzare l'elenco dei mesi e degli anni compresi tra le due date.
    es.
    gennaio 2009
    febbraio 2009
    marzo 2009

    Grazie mille
    Buona giornata

  2. #2
    Codice PHP:
    $startDate mktime(0,0,0,1,30,2008); //Contiene la sata d'inizio
    $endDate mktime(0,0,0,1,12,2009); //Conteiene la data di fine

    $tmpDate $startDate//Variabile di Appoggio

    //Creo un ciclo nel quale vada ad incrementare la variabile di appoggio e continuo fino
    //A quando è maggiore della data di fine
    while($tmpDate <= $endDate){
       
    //Stampo il mese ed anno
       
    echo date("F Y"$tmpDate)."
    "
    ;
      
       
    //Incremento la data di appoggio
       
    $tmpDate mktime(date("H"$tmpDate),date("i"$tmpDate),date("s"$tmpDate), date("n"$tmpDate) + 1date("j"$tmpDate), date("Y"$tmpDate));
       
    //Noterai il  + 1 al mese, che incrementerà di un mese la variabile di appoggio
    }

    //Un ulitma cosa: se la data di inizio era un giorno del mese superiore della data di fine
    //Ad esempio $startDate = 10 gennaio ed $endDate = 1 settembre
    //Il mese ed anno in $endDate non verrà stampato, quindi:

    if(date("j"$startDate) > date('j'$endDate)){
       echo 
    date("F Y"$endDate)."
    "
    ;

    Dovrebbe andare
    I DON'T Double Click!

  3. #3
    Utente di HTML.it L'avatar di gohnzo
    Registrato dal
    Mar 2009
    Messaggi
    13
    Funziona alla grande!

    Grazie mille

  4. #4
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    molto simile alla precedente...

    Codice PHP:
    <?php
    $start_date
    ='24-04-2009';
    $end_date='31-12-2009';


    echo 
    "<pre>";
    $date=mesi_in($start_date,$end_date);
    print_r($date);
    echo 
    "</pre>";

    function 
    mesi_in($start_date,$end_date)
      {
      
    $time_coll=array();
      list(
    $s_dd,$s_mm,$s_yyyy)=explode('-',$start_date);
      list(
    $e_dd,$e_mm,$e_yyyy)=explode('-',$end_date);  

      for(
    $x=mktime(0,0,0,$s_mm,$s_dd,$s_yyyy);$x <= mktime(0,0,0,$e_mm,$e_dd,$e_yyyy);$x+=604800)
        {
        
    $now=date("m-Y",$x);
        if(!
    in_array($now,$time_coll)) $time_coll[]=$now;
        }
      return 
    $time_coll;
      }
    ?>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  5. #5
    Due domande:

    1- che cos'è 604800?
    2- Non è meglio definire il for:
    Codice PHP:
    ...
    $endD mktime(0,0,0,$e_mm,$e_dd,$e_yyyy);
    for(
    $x=mktime(0,0,0,$s_mm,$s_dd,$s_yyyy);$x <= $endD;$x+=604800)
    ... 
    Così eviti di generare N volte il timestamp?
    I DON'T Double Click!

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    @gohnzo: il titolo non era a norma e l'ho modificato io. In futuro fai più attenzione e visto che sei nuovo leggiti il regolamento.


    http://forum.html.it/forum/showthrea...hreadid=412253

  7. #7
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Originariamente inviato da artorius
    Due domande:

    1- che cos'è 604800?
    2- Non è meglio definire il for:
    Codice PHP:
    ...
    $endD mktime(0,0,0,$e_mm,$e_dd,$e_yyyy);
    for(
    $x=mktime(0,0,0,$s_mm,$s_dd,$s_yyyy);$x <= $endD;$x+=604800)
    ... 
    Così eviti di generare N volte il timestamp?
    si vero, giusta l' osservazione del timestamp

    il 604800 è il numero di secondi in una settimana di 7 giorni
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  8. #8
    ah, ok, ma se la faccenda è un mese, si complica un po': non puoi dare un tempo fisso, dato che i mesi sono variabili (30, 31, 28, 29 giorni)
    I DON'T Double Click!

  9. #9
    Utente di HTML.it L'avatar di gohnzo
    Registrato dal
    Mar 2009
    Messaggi
    13
    nicola75ss chiedo scusa!
    ho letto il regolamento solo dopo aver postato

  10. #10
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Originariamente inviato da artorius
    ah, ok, ma se la faccenda è un mese, si complica un po': non puoi dare un tempo fisso, dato che i mesi sono variabili (30, 31, 28, 29 giorni)
    si ma di minimo 28 giorni, quindi 4 serie da 7 giorni .. non ha senso che io cicli tutti i giorni, quindi ho assuno un' 'unita' superiore, ovvero la settimana
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

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 © 2024 vBulletin Solutions, Inc. All rights reserved.