2

我的服务器使用的是旧版本的 PHP,所以很遗憾我不能使用 $datetime1->diff($datetime2) 方法。

我目前正在使用以下代码,但它并没有真正起作用:

$from = explode("-",date("Y-m-d",$recurring_invoices->start_date));
$to = explode("-",date("Y-m-d",$to_time));
$months = ($to[0]-$from[0])*12+$to[1]-$from[1];

它将 7 月 30 日至 6 月 1 日计算为一个整月。它应该只计算从 7 月 1 日到 6 月 1 日的整个月份。

我注意到有一个 MYSQL TIMESTAMPDIFF 函数,但我似乎也无法让它工作。

$query = "SELECT TIMESTAMPDIFF(MONTH,'$recurring_invoices->start_date','$from_time')";
print_r($this->queryResult($query));

或者

$query = "SELECT TIMESTAMPDIFF(MONTH, from_date, to_date) FROM agenda";
print_r($this->queryResult($query));

非常感谢您的帮助!

4

1 回答 1

1

我认为这应该可行,但现在未经测试已修复:

list($startYear, $startMonth, $startDay) = explode('-', date('Y-n-j', $recurring_invoices->start_date));
list($endYear, $endMonth, $endDay) = explode('-', date('Y-n-j', $to_time));

$months = 0;
$months += ($endYear-$startYear) * 12;
$months += $endMonth - $startMonth;
if ($startDay > $endDay) {
  $months -= 1;
}

echo $months;
于 2012-07-11T21:55:22.157 回答