2016-03-15 55 views
1

我的代碼:比較兩個日期王氏加入天一個在PHP

<?php 
$today = date('Y-m-d H:i:s'); 
$expire1 = $row['datetime']; 
$dni_uslugi = $usluga_wybor['days']; 
$expire = date('Y-m-d H:i:s', strtotime($expire1. '+ '.$dni_uslugi.' days')); 
$format = "Y-m-d H:i:s"; 
$date1 = DateTime::createFromFormat($format, $today); 
$date2 = DateTime::createFromFormat($format, $expire); 

if($date2 < $date1) echo 'delete'; 

它運行良好,幾乎所有的日期...我有,例如幾個日期的問題: 我有日期2016-03- 07 22:32:54和$dni_uslug這個日期是30天,所以它應該在4月7日結束。它不能被刪除,因爲它當然是活動的,但代碼說刪除這個日期...

任何想法爲什麼代碼這樣做?它幾乎有98%的日期發揮很好,但在少數情況下,它的工作原理

+2

* 「我有日期2016年3月7日22點32分54秒和$ dni_uslug這個日期是30天,所以應該在4月7日結束」 *。像往常一樣,今年3月有31天。 3月7日之後的30天是4月6日。如果需要增加1個月,則增加1個月,而不是30天。 – axiac

+1

我會在代碼中創建'DateTime'對象,然後使用['DateTime :: add()'](http://php.net/manual/en/datetime.add.php)來避免模糊的['strtotime()']接受的格式(http://php.net/manual/en/function.strtotime.php)。像'$ date1 = new DateTime(); $ date2 =(new($ row ['datetime'])) - > add(new DateInterval('P'。$ dni_uslugi.'D'));' – axiac

+0

@axiac這不是我的問題點,我需要添加30天或14天或7天。這取決於服務 – pusty

回答

0

根據此代碼,增加30天可以讓你到4月6日。

<?php 
$date1 = new DateTime('2016-03-07 22:32:54'); 
$date2 = clone($date1); 
$daysToAdd = 30; 
$date2->add(new DateInterval("P{$daysToAdd}D")); 
echo "date1:" . $date1->format('Y-m-d H:i:s') . "\n"; 
echo "date2:" . $date2->format('Y-m-d H:i:s') . "\n"; 

if($date2 < $date1) echo "delete\n"; 
else echo "keep\n"; 

輸出:

date1:2016-03-07 22:32:54 
date2:2016-04-06 22:32:54 
keep 
+0

好吧,我的壞...然而這不是我的問題。我不知道爲什麼腳本告訴我使用日期已過期,如果我在3月7日添加30天...它應該告訴我它在4月6日前一直有效? – pusty