簡體   English   中英

PHP計算沒有日期的兩個日期之間的差

[英]PHP calculate difference between two dates WITHOUT year

我通常使用這種方法來計算兩個日期之間的差異:

$datediff = strtotime($enddate) - strtotime($startdate);        
$totalDays = floor($datediff/(60*60*24));

但是現在我遇到了問題。 現在,我不應該在計算中考慮年份。 例如,這意味着2014年1月2日和2015年1月6日這兩個日期之間的差額應為4天。

為此,我將日期格式更改為md ,並使用以下方法:

$startdate = date('m-d',strtotime($startdate));
$enddate = date('m-d',strtotime($enddate));
$datediff = $enddate - $startdate;
$totalDays = floor($datediff/(60*60*24));

但是我得到的結果為0。有人可以幫助我嗎? 我在做什么錯?

您可以將年份替換為1970,然后根據該年份進行計算。

$date1 = '2014-01-17 04:05:54';
$date2 = '2013-01-12 02:07:54';

$date1 = preg_replace('/([\d]{4})/', '1970', $date1);
$date2 = preg_replace('/([\d]{4})/', '1970', $date2);

$timestamp1 = strtotime($date1);
$timestamp2 = strtotime($date2);

$date_diff = gmdate('d H:i:s', abs($timestamp2-$timestamp1));

var_dump($date_diff);

請嘗試這個:

$startdate = 'January 1 2014';
$enddate =  'February 6 2015';
$startdate = date('d-m-1970',strtotime($startdate));
$enddate = date('d-m-1970',strtotime($enddate));
$datediff = strtotime($enddate) - strtotime($startdate);
$totalDays = floor($datediff/(60*60*24));
echo $totalDays;

希望這會有所幫助

這是PHP DateTime解決方案

$date1 = new DateTime('2015-01-02');
$date2 = new DateTime('2014-01-06');

switch (true) {
    case ($date1 < $date2) :
        $date2->setDate($date1->format('Y'), $date2->format('m'), $date2->format('d'));
        break;

    case ($date2 < $date1) :
        $date1->setDate($date2->format('Y'), $date1->format('m'), $date1->format('d'));
        break;
}

$interval = $date1->diff($date2);
echo $interval->format('%R%a days'); // +4 days

玩得開心!

或者只是中斷年份,而忽略開關部分。

只需輸入日期的“ md”部分,然后在其末尾附加任何年份,例如“ -2014”。 然后datediff()將為您提供所需的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM