Visualizzazione dei risultati da 1 a 7 su 7

Discussione: datediff in PHP?

  1. #1
    Utente di HTML.it L'avatar di fede_00
    Registrato dal
    May 2004
    Messaggi
    279

    datediff in PHP?

    ciao, un aiuto
    sto cercando di fare una differenza tra due date per vedere se data2 è maggiore di data1, sto usando mktime per costruire le due date e vederne la differenza ma sto cannando qualcosa; è la funzione giusta o ne devo usare altre?

    grazie

  2. #2
    tempo fai trovai come open source la funzione DateDiff dell'ASP convertita in PHP per scopi didattici

    Codice PHP:
    function datediff($interval$date1$date2) {
        
    $seconds $date2 $date1;
        switch (
    $interval) {
            case 
    "y":    // years
                
    list($year1$month1$day1) = split('-'date('Y-m-d'$date1));
                list(
    $year2$month2$day2) = split('-'date('Y-m-d'$date2));
                
    $time1 = (date('H',$date1)*3600) + (date('i',$date1)*60) + (date('s',$date1));
                
    $time2 = (date('H',$date2)*3600) + (date('i',$date2)*60) + (date('s',$date2));
                
    $diff $year2 $year1;
                if(
    $month1 $month2) {
                    
    $diff -= 1;
                } elseif(
    $month1 == $month2) {
                    if(
    $day1 $day2) {
                        
    $diff -= 1;
                    } elseif(
    $day1 == $day2) {
                        if(
    $time1 $time2) {
                            
    $diff -= 1;
                        }
                    }
                }
                break;
            case 
    "m":    // months
                
    list($year1$month1$day1) = split('-'date('Y-m-d'$date1));
                list(
    $year2$month2$day2) = split('-'date('Y-m-d'$date2));
                
    $time1 = (date('H',$date1)*3600) + (date('i',$date1)*60) + (date('s',$date1));
                
    $time2 = (date('H',$date2)*3600) + (date('i',$date2)*60) + (date('s',$date2));
                
    $diff = ($year2 12 $month2) - ($year1 12 $month1);
                if(
    $day1 $day2) {
                    
    $diff -= 1;
                } elseif(
    $day1 == $day2) {
                    if(
    $time1 $time2) {
                        
    $diff -= 1;
                    }
                }
                break;
           case 
    "w":    // weeks
                // Only simple seconds calculation needed from here on
                
    $diff floor($seconds 604800);
                break;
           case 
    "d":    // days
                
    $diff floor($seconds 86400);
                break;
           case 
    "h":    // hours
                
    $diff floor($seconds 3600);
                break;
           case 
    "i":    // minutes
                
    $diff floor($seconds 60);
                break;
           case 
    "s":    // seconds
                
    $diff $seconds;
                break;
        }
        return 
    $diff;


  3. #3
    Utente di HTML.it L'avatar di fede_00
    Registrato dal
    May 2004
    Messaggi
    279
    grazie, con ASP / VBSCRIPT m'ero abituato bene

  4. #4
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    io ne avevo fatta una stupidina per un tizio.. è giù nella firma.. ma quella proposta è molto più completa.. naturalmente
    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  5. #5
    Utente di HTML.it L'avatar di fede_00
    Registrato dal
    May 2004
    Messaggi
    279
    girovagando ho trovato anche questa:

    function date_diff($dat1,$dat2) {

    /* Dat1 and Dat2 passed as "YYYY-MM-DD" */

    $tmp_dat1 = mktime(0,0,0,substr($dat1,5,2),substr($dat1,8,2),s ubstr($dat1,0,4));
    $tmp_dat2 = mktime(0,0,0,substr($dat2,5,2),substr($dat2,8,2),s ubstr($dat2,0,4));

    $yeardiff = date('Y',$tmp_dat1)-date('Y',$tmp_dat2);
    /* a leap year in every 4 years and the days-difference */
    $diff = date('z',$tmp_dat1)-date('z',$tmp_dat2) + floor($yeardiff /4)*1461;

    /* remainder */
    for ($yeardiff = $yeardiff % 4; $yeardiff>0; $yeardiff--) {
    $diff += 365 + date('L',mktime(0,0,0,1,1,intval(substr((($tmp_dat 1>$tmp_dat2) ? $dat1 : $dat2),0,4))-$yeardiff+1));
    }

    return $diff;
    }

  6. #6
    Originariamente inviato da fede_00
    grazie, con ASP / VBSCRIPT m'ero abituato bene
    Php allora ti vizia.
    codice:
    $data1 = mktime(0, 0, 0, $mese1, $giorno1, $anno1);
    $data2 = mktime(0, 0, 0, $mese2, $giorno2, $anno2);
    
    if($data2 > $data1) echo "$data2 e' maggiore di $data1";
    
      elseif( $data2 < $data1)  echo "$data2 e' minore di $data1";
    
         else echo "Le due date sono uguali";


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it L'avatar di fede_00
    Registrato dal
    May 2004
    Messaggi
    279
    grazie a tutti
    con PHP tiro qualche noce per trovare la conversione delle varie funzioni o oggetti però mi piace molto di + di ASP (ammesso che ASP lo si possa considerare un linguaggio)

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.