【问题标题】:PHP Difference in months between two dates? [duplicate]PHP 两个日期之间的月差? [复制]
【发布时间】:2012-05-12 18:00:47
【问题描述】:

可能重复:
How to calculate the difference between two dates using PHP?
Date Difference in php?

我在一个变量中有两个日期

$fdate = "2011-09-01"

$ldate = "2012-06-06"

现在我需要它们之间的月差。
例如,如果您从 09 月(9 月)到明年 06 月(6 月)计算,答案应该是 10 - 结果是 10。
如何在 PHP 中做到这一点?

【问题讨论】:

标签: php datediff


【解决方案1】:

看看date_diff:

<?php
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%m months');
?>

【讨论】:

  • 我在运行此程序时出错...致命错误:在第 4 行的 C:\test\test.php 中调用未定义函数 date_diff()
  • @Jaiff 您正在运行哪个 PHP 版本?此功能需要 5.3。
  • 这不起作用,对于您提供的示例,它将返回 0
  • 我的意思是,你没有考虑到这里的年份。
  • 用 $interval->m + ($interval->y * 12) 加上年份
【解决方案2】:

更优雅的解决方案是使用DateTimeDateInterval

<?php

// @link http://www.php.net/manual/en/class.datetime.php
$d1 = new DateTime('2011-09-01');
$d2 = new DateTime('2012-06-06');

// @link http://www.php.net/manual/en/class.dateinterval.php
$interval = $d2->diff($d1);

$interval->format('%m months');

【讨论】:

  • 如果间隔超过 12 个月,这将不起作用。 13 个月的差异将显示为 1。正如用户在对另一个答案的评论中提到的那样,您可以使用 $interval-&gt;m + 12*$interval-&gt;y 来解决此问题。
  • 为什么不发布一个完整的答案,或者更新这个?
猜你喜欢
  • 2011-06-06
  • 2016-04-18
  • 1970-01-01
  • 2014-04-07
  • 2010-12-04
  • 1970-01-01
相关资源
最近更新 更多