2013-08-23 8 views
5

voglio meno due date in phpCome Minus due date in php

ad esempio:

$date1 = 08/16/2013; 
$date2 = 08/23/2013; 
$answer = date2 - date1; 

la $ risposta dovrebbe essere 7, come farò a farlo? grazie mille

+0

'$ datetime1 = new DateTime ($ date1); \t \t $ datetime2 = new DateTime ($ date2); \t \t $ days = round (($ datetime1-> format ("U") - $ datetime2-> format ("U"))/86400); 'Restituirà numero intero di giorni. –

risposta

13

Inizio usando DateTime classe per la manipolazione di data/ora:

$date1 = new DateTime('08/16/2013'); 
$date2 = new DateTime('08/23/2013'); 
$diff = $date1->diff($date2); 
print_r($diff); // or $diff->days 

uscita:

DateInterval Object 
(
    [y] => 0 
    [m] => 0 
    [d] => 7 
    [h] => 0 
    [i] => 0 
    [s] => 0 
    [invert] => 0 
    [days] => 7 
) 

Ulteriori informazioni sono disponibili allo DateTime:diff().


Si prega di notare che i vari strtotime() esempi non sono corretti nel calcolo della differenza di data/ora. L'esempio più semplice è la differenza tra 2013-03-31 21:00 e 2013-03-30 21:00. Quale per occhio nudo è esatta differenza di 1 giorno, ma se si sottrae queste 2 date, si otterrà 82800 secondi che è 0.95833333333333 giorni. Ciò è dovuto al cambio di orario dall'inverno all'ora legale. DateTime gestisce correttamente gli anni bisestili e le fasce orarie.

+0

come otterrò il valore? $ Diff [ 'm']? –

+0

Come ho già postato nella risposta, se vuoi la differenza di giorni, prendila come '$ diff-> days'. –

+0

grazie! è davvero un grande aiuto –

-2
$date1 = '08/16/2013'; 
$date2 = '08/23/2013'; 
$days = (strtotime($date2) - strtotime($date1))/(60 * 60 * 24); 
print $days; 
+0

perché dividi il diff a (60 * 60 * 24)? e dove lo prendi? –

+0

Quanti giorni la differenza è tra '2013-03-31 21: 00' a '2013-03-30 21: 00' con questo esempio? –

+0

Quello che dovrebbe essere la risposta. – Yasitha

0

si può ottenere con strtotime e meno Date

$diff = abs(strtotime('08/16/2013') - strtotime('08/23/2013')); 

echo $min = floor($diff/(60*60*24)); // 7 
+0

perché dividi il diff a (60 * 60 * 24)? e dove lo prendi? –

+0

'60 * 60 * 24' è il secondo dei giorni. Il risultato 'diff' è' 604800' circa tra due secondi di data. Devi dividere al giorno. Il primo '60' è min, il secondo' 60' ora e l'ultimo '24' è per il giorno. Quindi '60 * 60 * 24 = 86400' significa una (1) data. – Bora

+0

Quanti giorni la differenza è tra '2013-03-31 21: 00' a '2013-03-30 21: 00' con questo esempio? –

1

Prova questo -

<?php 
$date1 = strtotime('08/16/2013'); 
$date2 = strtotime('08/23/2013'); 

echo $hourDiff=round(abs($date2 - $date1)/(60*60*24),0); 
?>