Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: differenza tra date

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    245

    differenza tra date

    Ciao a tutti ho un problema, devo fare la differenza tra due date in minuti, mi spiego meglio ho queste 2 variabili:

    $Data1='20/03/2005';
    $Data2='21/03/2006';

    mi servirebbe calcolare quanti minuti di differenza ci sono tra le 2 date (data2-data1 in minuti).
    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    $data1 = mktime(0,0,0,3,20,2005);
    $data2 = mktime(0,0,0,3,21,2006);

    $diff = ($data2-$data1)/60;
    echo $diff;

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    245

    differenza tra date

    Scusami ancora, ma le date gliele passo in un form xsl.
    Quindi io ho solo $data1 e $data2, scusami sono un pò ignorante, ho cominciato da poco...

  4. #4
    se tu hai le date come illustri nel primo post, basta che ti ricavii 3 pezzi in cui è composta la data (gg/mm/aaaa), quindi:

    Codice PHP:
    list($gg1,$mm1,$yy1)=explode("/",$Data1);
    list(
    $gg2,$mm2,$yy2)=explode("/",$Data2); 
    e poi applichi le fuzioni che hai visto sopra passando nell'ordine i 3 parametri










    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    se la data è nel formato
    $data1='20/03/2005';

    list($giorno,$mese,$anno) = explode('/',$data1);

    così recuperi le singole componenti

    $giorno;
    $mese;
    $anno;

    e poi con mktime ricavi il timestamp della data

    $data1ts = mktime(0,0,0,$mese,$giorno,$anno);

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Sono arrivato due come dicevano i ciclisti di un tempo.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    245
    No, nn ho le date come illustro nel primo post, ma come nel secondo cioè gliele passo da un form e quindi ho $data1 e $data2 e non ($data1='10/03/2005', $data2='11/03/2005')

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da kasy
    No, nn ho le date come illustro nel primo post, ma come nel secondo cioè gliele passo da un form e quindi ho $data1 e $data2 e non ($data1='10/03/2005', $data2='11/03/2005')
    :master:

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Posto questa funzione che aveva fornito ipnotic qualche tempo fa che è molto utile.

    Codice PHP:
    <?php 
    /** 
    * La funzione calcola la differenza tra due date 
    * in formato UNIX TimeStamp 
    * restituendo in output i giorni, le ore, i minuti e i secondi 
    * di differenza (di default, restituisce i giorni) 
    */ 

    function fDateDiff($dateFrom$dateTo$unit 'd'

        
    $difference null
          
        
    $date1 $dateFrom
        
    $date2 $dateTo
          
        if( 
    $date1 $date2 ){ 
            return 
    null
        } 
          
        
    $diff $date2 $date1
          
        
    $days 0
        
    $hours 0
        
    $minutes 0
        
    $seconds 0
          
        if (
    $diff 86400 <= 0){ // Ci sono 86400 secondi in un giorno 
            
    $days $diff 86400
        } 
          
        if(
    $diff 86400 0){ 
            
    $rest = ($diff 86400); 
            
    $days = ($diff $rest) / 86400
              
            if(
    $rest 3600 ){ 
                
    $rest1 = ($rest 3600); 
                
    $hours = ($rest $rest1) / 3600
                  
                if( 
    $rest1 60 ){ 
                    
    $rest2 = ($rest1 60); 
                    
    $minutes = ($rest1 $rest2) / 60
                    
    $seconds $rest2
                }else{ 
                    
    $minutes $rest1 60
                } 
            }else{ 
                
    $hours $rest 3600
            } 
        } 
          
        
    //In quel unità restituire 
        //la differenza ? 
        
    switch(strtolower($unit)){ 
            case 
    'd'
                
    $partialDays 0
                
    $partialDays += ($seconds 86400); 
                
    $partialDays += ($minutes 1440); 
                
    $partialDays += ($hours 24); 
                
    $difference $days $partialDays
                break; 
                  
            case 
    'h'
                
    $partialHours 0
                
    $partialHours += ($seconds 3600); 
                
    $partialHours += ($minutes 60); 
                
    $difference $hours + ($days 24) + $partialHours
                break; 
                  
            case 
    'm'
                
    $partialMinutes 0
                
    $partialMinutes += ($seconds 60); 
                
    $difference $minutes + ($days 1440) + ($hours 60) + $partialMinutes
                break; 
                  
            case 
    's'
                
    $difference $seconds + ($days 86400) + ($hours 3600) + ($minutes 60); 
                break; 
                  
            case 
    'a'
                
    $difference = array ( 
                    
    "days" => $days
                    
    "hours" => $hours
                    
    "minutes" => $minutes
                    
    "seconds" => $seconds 
                     
    ); 
                break; 
        } 
          
        
    //Ritorno la differenza 
        
    if(is_array($difference)){ 
            return 
    $difference
        }else{ 
            return 
    round($difference); 
        } 
          

    // Esempio
    echo fDateDiff(11112732001111359600$unit 'm'
    ?>

  10. #10
    Originariamente inviato da kasy
    No, nn ho le date come illustro nel primo post, ma come nel secondo cioè gliele passo da un form e quindi ho $data1 e $data2 e non ($data1='10/03/2005', $data2='11/03/2005')
    si ok ma il formato delle date qual è? come le inseriscono gli utenti nel form?
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

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.