Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    170

    Intervallo tra due date

    Come faccio a trovare la differenza in giorni tra 2 date, conteggiando per giorno intero anche se non è completo di 24 ore? Mi spiego meglio:
    dal 5/09/2005 al 6/09/2005 ci deve essere 1 giorno di differenza, anche se ci sono rimaste meno di 24 ore!

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    $giorno1=mktime(0,0,0,9,5,2005);
    $giorno2=mktime(0,0,0,10,5,2005);
    fai la differenza dei due valori e poi dividi per il numero di secondi presenti in una giornata:
    echo ($giorno2-giorno1)/86400;

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    170
    Si, ma così ottengo che i giorni non completi non vengano conteggiati:
    es:
    $giorno1=mktime(10,0,0,9,5,2005);
    $giorno2=mktime(0,0,0,10,5,2005);
    echo ($giorno2-$giorno1)/86400;
    risultato= 29.583333333333 gg.
    Come faccio a gestire l'eventualità che ci sia una frazione di giorno e sapere se conteggiarla o meno?

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    8
    codice:
    <?
    $data1 = mktime("0", "0", "0", $_POST[mese1], $_POST[giorno1], $_POST[anno1]); //timestamp della data1 alle ore 00:00
    $data2 = mktime("0", "0", "0", $_POST[mese2], $_POST[giorno2], $_POST[anno2]); //timestamp della data1 alle ore 00:00
    $giorni=abs($data1 - $data2)/(60*60*24); //faccio la differenza tra i 2 timestamp e la divido per il numero di secondi che c'è ogni giorno'
    echo "$giorni";
    ?>
    ho messo la funzione abs perchè non si sa a priori quale data è la maggiore

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    8
    codice:
    <?
    $data1 = mktime("10", "0", "0", $_POST[mese1], $_POST[giorno1], $_POST[anno1]); //timestamp della data1 alle ore 00:00
    $data2 = mktime("0", "0", "0", $_POST[mese2], $_POST[giorno2], $_POST[anno2]); //timestamp della data1 alle ore 00:00
    $giorni=abs($data1 - $data2)/(60*60*24); //faccio la differenza tra i 2 timestamp e la divido per il numero di secondi che c'è ogni giorno'
    if($giorni-intval($giorni)!=0)  $giorni=intval($giorni)+1;
    echo "$giorni";
    ?>
    in questo modo controlla se ci sono cifre decimali dopo la virgola nel numero di giorni. se è così prende la sola parte intera e aggiunge 1, cioè arrotonda per eccesso.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    8
    mhmmm mi sto andando ad incasinare la vita

    ma perchè specifichi l'ora scusa ????

    fai semplicemente a meno di specificare l'ora facendo finta che siano le 0:0 e 0 secondi o no !!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    170
    Le date sono due variabili:un valore proviene da un campo in un database e l'altro è relativo alla funzione time(). Ma in effetti posso ricavarmi le due date senza tener conto degli orari, se questo può in qualche modo semplificarmi la situazione!

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.