为了账号安全,请及时绑定邮箱和手机立即绑定

在php中找到月份差异?

在php中找到月份差异?

PHP
天涯尽头无女友 2020-02-01 17:16:38
有什么办法可以找到PHP中月份的差异?我有从2003年10月17日到2004年3月24日之间的输入。我需要找出这两天内有多少个月。假设6个月,我只需要几个月的输出。感谢您指导我的工作日差。我通过MySQL找到解决方案,但我在PHP中需要它。有人帮助我,谢谢。
查看完整描述

3 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

这是一个快速的:


$date1 = mktime(0,0,0,10,0,2003); // m d y, use 0 for day

$date2 = mktime(0,0,0,3,0,2004); // m d y, use 0 for day


echo round(($date2-$date1) / 60 / 60 / 24 / 30);


查看完整回答
反对 回复 2020-02-01
?
慕标5832272

TA贡献1966条经验 获得超4个赞

在测试了大量解决方案之后,将其全部进行单元测试,这就是我得出的结果:


/**

 * Calculate the difference in months between two dates (v1 / 18.11.2013)

 *

 * @param \DateTime $date1

 * @param \DateTime $date2

 * @return int

 */

public static function diffInMonths(\DateTime $date1, \DateTime $date2)

{

    $diff =  $date1->diff($date2);


    $months = $diff->y * 12 + $diff->m + $diff->d / 30;


    return (int) round($months);

}

例如,它将返回(来自单元测试的测试用例):


01.11.2013-30.11.2013-1个月

2013年1月1日-2013年12月31日-12个月

31.01.2011-28.02.2011-1个月

01.09.2009-01.05.2010-8个月

01.01.2013-31.03.2013-3个月

15.02.2013-15.04.2013-2个月

1985年2月1日-2013年12月31日-347个月

注意:由于四舍五入是与日期进行舍入,因此即使是半个月也将被舍入,如果在某些情况下使用它可能会导致问题。因此,请勿在这种情况下使用它,否则会导致问题。


例如:


2013年11月2日-2013年12月31日将返回2,而不是1(符合预期)。


查看完整回答
反对 回复 2020-02-01
  • 3 回答
  • 0 关注
  • 431 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信