鉴于12月30日的工作日期+ 2个月错误

时间:2015-12-29 04:30:56

标签: php date

我想获得给定日期+2个月的第一个日期,Iam使用以下函数来获取此信息。

$date = '2015-12-31';
echo $date = date('1-m-Y', strtotime('+2 month', strtotime($date)));

这个工作正常。但是12月30日,这并没有按预期给出结果。对于日期2015-12-30,它给出结果'1-03-2016'。我知道因为2月有29天这给出了这个结果。但预期结果为'01-02-2016'。这可以通过编写新函数来解决。但我想使用内置函数。请帮助。

2 个答案:

答案 0 :(得分:1)

按照您的方式,将您的日期转换为所需月份的第1天,然后计算。像这样:

<?php
$date = '2015-12-31';
$date = date('1-m-Y', strtotime($date));
echo $date = date('1-m-Y', strtotime('+2 months',strtotime($date)));

你得到:

  

2016年1月2日

相反,您可以使用first day of +2 months

echo $date = date('d-m-Y', strtotime('first day of +2 months',strtotime($date)));

将输出(如您所愿):

  

2016年1月2日

答案 1 :(得分:1)

NOTE :

date('Y-m-d', strtotime('first day of +2 month', strtotime($date))); 地图2015-12-30至2015-12-01,然后first day of将其映射到2016-02-01。通过映射到您的开始日期的第一天,在增加+2个月之前,您不必担心短时间。