Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    208

    Strano comportamento con le date

    mi trovo due date e devo estrapolare il numero di giorni di differenza tra loro, solo che il risultato dell'operazione fornisce dei valori strani.
    codice:
    $datai = '2008-10-24';
    $dataf = '2008-10-28';
    
    echo $giorni = (strtotime($dataf)-strtotime($datai))/86400;
    
    Risultato = 4.04166666667
    
    
    $datai = '2008-10-20';
    $dataf = '2008-10-24';
    
    echo '
    '.$giorni = (strtotime($dataf)-strtotime($datai))/86400;
    
    Risultato = 4
    come mai la prima fornisce un valore decimale mentre la seconda no?

  2. #2
    mai sentito parlare dell'ora legale????


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

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    208
    Originariamente inviato da piero.mac
    mai sentito parlare dell'ora legale????

    Azz! puoi spiegarmi meglio il problema?

  4. #4
    Originariamente inviato da Mixio
    Azz! puoi spiegarmi meglio il problema?
    strtotime cerca di restituire un valore unix timestamp dalla data passata. Restituisce l'attuale data e orario misurata in numero di secondi dalla Unix Epoch (January 1 1970 00:00:00 GMT).

    Quindi il giorno 26 ottobre, giorno del ritorno dall'ora legale vale 25 ore e non 24.

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    208
    Originariamente inviato da piero.mac
    strtotime cerca di restituire un valore unix timestamp dalla data passata. Restituisce l'attuale data e orario misurata in numero di secondi dalla Unix Epoch (January 1 1970 00:00:00 GMT).

    Quindi il giorno 26 ottobre, giorno del ritorno dall'ora legale vale 25 ore e non 24.
    Cavolo Piero sei incredibile.

    Quindi mi conviene arrotondare il tutto con round() oppure mi consigli qualche stratagemma per ottenere sempre un numero intero valido di giorni?

  6. #6
    se hai disponibile un db mysql fai una query semplice semplice.....

    codice:
    SELECT datediff( '2008-10-28', '2008-10-24' ) AS diff
    con php e' tutto piu' complesso. Devi considerare oltre all'ora legale (ore) anche gli anni bisestili. Prova a vedere se ci sono funzioni php che ti rendano un time zone GMT in modo da evitare l'ora legale.

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    208
    Originariamente inviato da piero.mac
    se hai disponibile un db mysql fai una query semplice semplice.....

    codice:
    SELECT datediff( '2008-10-28', '2008-10-24' ) AS diff
    con php e' tutto piu' complesso. Devi considerare oltre all'ora legale (ore) anche gli anni bisestili. Prova a vedere se ci sono funzioni php che ti rendano un time zone GMT in modo da evitare l'ora legale.
    Il problema è che questi calcoli li devo fare all'interno del PHP

  8. #8
    Originariamente inviato da Mixio
    Il problema è che questi calcoli li devo fare all'interno del PHP
    fai una funzione che ti calcoli i soli giorni con mktime.
    per es:

    Codice PHP:
    $datai '2008-10-24';
    $dataf '2008-10-28';

        
    $da   explode('-'$datai);
        
    $a  explode('-'$dataf); 

        
    $giorni_da date('z'mktime(0,0,0$da[1], $da[2], $da[0]));  
        
    $giorni_a  date('z'mktime(0,0,0$a[1], $a[2], $a[0]));

    echo 
    $giorni_a $giorni_da

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

  9. #9
    secondo me puoi anche arrotondare per difetto e fregartene per fare i conti, se il risultato che ti interessa sono i giorni di differenza. o no?
    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    208
    Originariamente inviato da max161
    secondo me puoi anche arrotondare per difetto e fregartene per fare i conti, se il risultato che ti interessa sono i giorni di differenza. o no?
    effettivamente si, volevo un ulteriore certezza per eventuali altre controindicazioni.

    Comunque grazie Piero la tua soluzione sembra funzionare bene.

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.