簡體   English   中英

PHP-計算兩個日期之間的天數-在2013年3月和2013年4月不起作用

[英]PHP - Calculate days between two dates - not working in March and April 2013

我的PHP函數有問題。 一直到現在,當我需要計算日期2013-03-28和2013-04-01之間的天數(或更准確地說,是夜晚)時。 結果應為4(03/28至03 / 29、03 / 29至03 / 30、03 / 30至03/31和03/31至04/01),並且我的函數返回3。(當我使用2012- 03-28和2012-04-01,而不是2013年的相同日期,它可以正常運行)。 你能幫我嗎?

function termLength($dateFrom, $dateTo) {
  $dateFrom = (($dateFrom instanceof DateTime) ? $dateFrom : new DateTime($dateFrom));
  $dateTo = (($dateTo instanceof DateTime) ? $dateTo : new DateTime($dateTo));

  $difference = $dateTo->format('U') - $dateFrom->format('U');
  return floor($difference / (60 * 60 * 24));
}

echo termLength('2013-03-28', '2013-04-01');

// output: 3
// it should be: 4

你能幫我嗎? 謝謝,J。

如果仍然使用DateTime ,請使用DateInterval機制:

$diff = $dateFrom->diff($dateTo);
echo $diff->format('%a');

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

嘗試這個:

$start = strtotime('2013-03-28');
$end = strtotime('2013-04-01');

$days_between = ceil(abs($end - $start) / 86400);

我建議您將其轉換為時間戳,計算差異,然后將其轉換回。

round(($end_date - $start_date), 0);

功能主體:

function dateDifference($startDate = '', $endDate = '') {
  $startDateConverted = strtotime($startDate);
  $endDateConverted = strtotime($endDate);
  $substractedDate = $endDateConverted - $startDateConverted;
  $substractedDate = max(intval($substractedDate), 0);
  $dateDifference = round(abs($substractedDate) / 86400);
  return $dateDifference;
}

致電:

echo dateDifference('2013-03-28', '2013-04-01');

輸出:

4

暫無
暫無

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

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