簡體   English   中英

PHP比較兩個日期之間的差異

[英]php compare difference between two dates

我正在嘗試返回兩個日期之間的差額,我正在根據stackoverflow上示例工作

我的問題? 我完全返回了錯誤的結果,下面的代碼返回30年0個月9天,顯然它應該只有7天或1周。

代碼如下:

    date_default_timezone_set('America/Los_Angeles');

    $pickupDate = '2016-10-13';
    $returnDate  = 2016-10-20;

    $diff = abs(strtotime($pickupDate) - strtotime($returnDate));
    $years = floor($diff / (365*60*60*24));
    $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
    $days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

    printf("%d years, %d months, %d days\n", $years, $months, $days); 

任何輸入表示贊賞

首先,該代碼未考慮leap年,不同長度的月份等。

實際上在php中有一個函數,請檢查鏈接以獲取詳細信息: http : //php.net/manual/en/datetime.diff.php並舉一個示例:

$datetime1 = new DateTime('2016-10-13');
$datetime2 = new DateTime('2016-10-20');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%y years, %m months, %d days');

嘗試此操作,它將為您提供日期,時間,分鍾,小時,秒等不同的信息。

date_default_timezone_set('America/Los_Angeles');
$now = '2016-10-13';
$returnDate  = '2016-10-20';
$start = date_create($returnDate);
$end = date_create($now);
$diff=date_diff($end,$start);
print_r($diff);

演示

從手冊

 $pickupDate = new DateTime('2016-10-13');
 $returnDate = new DateTime('2016-10-20');
 $interval = $pickupDate->diff($returnDate);
 echo $interval->format('%R%a days');

http://php.net/manual/en/datetime.diff.php

date_default_timezone_set('America/Los_Angeles');

$pickupDate = '2016-10-13';
$returnDate  = '2016-10-20'; //use signle quote same as pickupDate 

$diff = abs(strtotime($returnDate) - strtotime($pickupDate)); // change the order 
$years = floor($diff / (365*60*60*24));
$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

printf("%d years, %d months, %d days\n", $years, $months, $days); 

謝謝

只需在返回日期中加上單引號,例如$returnDate = '2016-10-20'; 您可以像這樣使用php的date_diff()函數,

$daysdiffernce = date_diff(date_create('2016-10-13'),date_create('2016-10-20'));
echo $daysdiffernce->format("%R%a days");

這將給+7天的答案

暫無
暫無

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

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