使用自定义规则计算两个日期之间的天数


Calculate number of days between 2 dates with custom rules

以下是规则:

  • 每个月有30天(包括二月(
  • 岁月有360天

这里有一个例子:

  • 初始日期:2010年2月2日
  • 结束日期:2012年8月21日

天数计算为:

  • 2010年2月2日至2011年2月1日=360天
  • 2011年2月2日至2012年2月1日=360天
  • 2012年2月2日至2012年8月21日=200

最后200天的计算方式如下:

  • 2012年2月2日至2012年8月1日=180天(6个月(
  • 2012年8月2日至12年8月21日=20天

总计将920天

如有任何帮助,我们将不胜感激,并提前表示感谢。

感谢您的帮助,这就是我最终使用的:

$iDate = Carbon::createFromDate(2010, 2, 2);
$eDate = Carbon::createFromDate(2012, 8, 21);
$dateDiff = date_diff($iDate, $eDate);
$date = 0;
$date += $dateDiff->y * 360;
$date += $dateDiff->m * 30;
$date += $dateDiff->d + 1; // Need to add one more day
dd($date); // Outputs 920

这是使用Laravel,其中包括碳包装。

//2/2/10 to 2/1/11 = 360 days
$date_1 = "2/2/10";
$date_2 = "2/1/11";
$differenceFormat = "%a";
$diff = dateDifference($date_1 , $date_2 , $differenceFormat)   ;
echo "<br/>";
echo "$date_1 to $date_2 = $diff days";
//2/2/11 to 2/1/12 = 360 days
$date_1 = "2/2/11";
$date_2 = "2/1/12";
$differenceFormat = "%a";
$diff = dateDifference($date_1 , $date_2 , $differenceFormat)   ;
echo "<br/>";
echo "$date_1 to $date_2 = $diff days";
//2/2/12 to 8/21/12 = 200 days
$date_1 = "2/2/12";
$date_2 = "8/21/12";
$differenceFormat = "%a";
$diff = dateDifference($date_1 , $date_2 , $differenceFormat)   ;
echo "<br/>";
echo "$date_1 to $date_2 = $diff days";
//final
$date_1 = "2/2/10";
$date_2 = "8/21/12";
$differenceFormat = "%a";
$diff = dateDifference($date_1 , $date_2 , $differenceFormat)   ;
echo "<br/>";
echo "$date_1 to $date_2 = $diff days";
function dateDifference($date_1 , $date_2 , $differenceFormat = '%a' )
{
    $datetime1 = date_create($date_1);
    $datetime2 = date_create($date_2);
    $interval = date_diff($datetime1, $datetime2);
    return $interval->format($differenceFormat);
}