Visualizzazione dei risultati da 1 a 6 su 6

Discussione: differenza tra 2 date

  1. #1

    differenza tra 2 date

    Buonasera a tutti,
    so che l'argomento è già stato trattato più volte, ma non sono riuscito lo stesso a comprendere.


    In pratica estrapolo una data dal DB, gli aggiungo 1 giorno e poi devo stampare quante ore e minuti rimangono da adesso a quella data.
    Esempio:
    estraggo dal db '2013/11/16 18:10:00', la formatto in '16/11/2013 18:10:00', la stampo con 1 giorno in più '17/11/2013 18:10:00' e sotto dovrei stampare quante ore e minuti rimangono da 'adesso' al '17/11/2013 18:10:00'.


    Questo è quello che ho fatto io fino ad ora, ed il risultato è sempre 0.
    Codice PHP:
    $dt_occ        mysql_result($info,0,"occ_data"); // estraggo data da DB
    $dt_occ        strtotime($dt_occ); // la converto
    $dt_occ        strtotime('+1 day' $dt_occ); // aggiungo 24 ore (1 giorno)
    $dt_unico        date('d/m/Y H:i:s',$dt_occ); // la formatto in italiano
    $dt_il            date('d/m/Y',$dt_occ); // data
    $dt_alle        date('H:i',$dt_occ); // orario
    echo "Scade il ".$dt_il." alle ".$dt_alle// stampo la data di scadenza
    $adesso strtotime("now"); // data di adesso
    $adesso date('d/m/Y H:i:s',$adesso); // formatto in italiano
    $diff $dt_unico $adesso// differenza tra le date
    $hours $diff / ( 60 60 ); // dovrebbe restituirmi le ore
    $mins $diff 60// dovrebbe restituire i minuti
    echo "<br>Scadenza tra ".$hours.":".$mins."."// mi stampa sempre 0:0 

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Prova così:
    Codice PHP:
    $dt_occ        strtotime($dt_occ); // la converto
    $dt_occ        strtotime('+1 day' $dt_occ); // aggiungo 24 ore (1 giorno)
    $dt_unico        date('d/m/Y H:i:s',$dt_occ); // la formatto in italiano
    $dt_il            date('d/m/Y',$dt_occ); // data
    $dt_alle        date('H:i',$dt_occ); // orario
    echo "Scade il ".$dt_il." alle ".$dt_alle// stampo la data di scadenza
    $adesso strtotime("now"); // data di adesso
    $adesso_str date('d/m/Y H:i:s',$adesso); // formatto in italiano
    $diff $dt_occ $adesso// differenza tra le date
    $hours floor($diff / ( 3600 )); // dovrebbe restituirmi le ore
    $mins floor(($diff - ($hours 3600)) / 60); // dovrebbe restituire i minuti
    echo "<br>Scadenza tra ".$hours.":".$mins."."

  3. #3
    Nada, sempre 0. Sto pensando che forse potrebbe causare problemi il fatto che converto la data in italiano. Ora provo a duplicare le variabili in inglese e faccio i calcoli con quelli.

    --edit
    No, non va neanche in inglese, però qualcosa cambia, mi da sempre 0:33. Quando in realtà la data di scadenza è alle 19:30 e dovrebbe dirmi 0:23. Ma anche scorrendo il tempo reale quello rimane sempre 0:33.
    Ultima modifica di frenkytribe; 16-11-2013 a 20:08

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Ho fatto una prova...e pare funzionava.
    Hai visto che
    $diff = $dt_occ - $adesso;
    e che $adesso = strtotime("now");

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Codice PHP:
    // estraggo data da DB
    $dt_occ        mysql_result($info,0,"occ_data");

    // la converto in timestamp
    $dt_occ        strtotime($dt_occ);

    // data +1 giorno in formato timestamp
    $dt_occ_ts    strtotime('+1 day' $dt_occ);

    // la formatto in italiano
    $dt_unico    date('d/m/Y H:i:s',$dt_occ_ts);

    // data
    $dt_il        date('d/m/Y',$dt_occ_ts);

    // orario
    $dt_alle    date('H:i',$dt_occ_ts);

    // stampo la data di scadenza
    echo "Scade il ".$dt_il." alle ".$dt_alle."<br />";

    // data di adesso in formato timestamp
    $adesso_ts    time();

    // differenza tra le date
    $diff $dt_occ_ts $adesso_ts;

    // restituisce le ore
    $hours floor($diff / (60 60));

    //secondi rimanenti su cui calcolare i minuti
    $diff $diff - ($hours 60 60);

    // dovrebbe restituire i minuti
    $mins floor($diff 60);

    echo 
    "<br>Scadenza tra ".$hours.":".$mins."."

  6. #6
    Grazie mille a entrambi.
    Quote Originariamente inviata da boots Visualizza il messaggio
    Ho fatto una prova...e pare funzionava.
    Hai visto che
    $diff = $dt_occ - $adesso;
    e che $adesso = strtotime("now");
    Hai ragione, non mi ero accorto di $adesso.

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.