Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Differenza tra 2 date

  1. #1

    Differenza tra 2 date

    Ciao a tutti,
    vorrei sapere se c'è un modo per calcolare quanto tempo intercorre tra una data ed ora e l'altra . Per essere più chiari:
    Tra il giorno 02/03/2007 alle ore 12.30 ed il giorno 04/03/2007 alle ore 16.15 intercorrono tot giorni, tot ore e tot. minuti.

    Sono sicuro che esiste un modo per fare questo calcolo.
    Voi conoscete una funzione a cui, passate due date e relative ore, calcola il tempo che intercorre tra le due?

    Grazie.

  2. #2
    le date sono su db?? in caso positivo puoi utilizzare le funzioni del db

    per mysql cè un certo time_diff
    www.gext.it

  3. #3
    No, le date non sono su db.

  4. #4
    allora ho paura che il conto lo devi fare manuale...

    dovresti recuperare il timestamp delle due date (meglio se in secondi), fai la differenza, e iteri con le divisioni (prima trovi i minuti, poi le ore, poi i giorni....)
    www.gext.it

  5. #5
    Ci sto provando, ma la cosa non è semplice.
    A nessuno è mai capitato di dover creare un'apposita funzione per trasformare il timestamp in anni, giorni, mesi, ore, minuti e secondi?

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Codice PHP:
    <?php
    function dateDiff($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){ 
            
    $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;
            }
        }
         
        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;
        }
         
        if(
    is_array($difference)){
            return 
    $difference;
        }else{
            return 
    round($difference);
        }
         
    }

    $data1 strtotime("2007-03-02 12:30:00");
    $data2 strtotime("2007-03-04 16:15:00");

    echo 
    '<pre>';
    print_r(dateDiff($data1,$data2,'a'));
    ?>

  7. #7
    Utente di HTML.it L'avatar di polinet
    Registrato dal
    Nov 2000
    Messaggi
    993
    Come detto gia piu volte, si impara piu da te che dai manuali.!!!!!!
    Se hai tempo e voglia, ci fai due commenti sullo script? (per capirlo a fondo)

    Grazie.
    ¿Hasta la pasta?

  8. #8
    Originariamente inviato da nicola75ss
    Codice PHP:
    <?php
    function dateDiff($dateFrom$dateTo$unit 'd')
    {
    ......
    }
    ?>

    complimenti... era proprio quello che intendevo io
    www.gext.it

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.