我有一个日期,需要添加24个月 (而不是2年) 。这就是我试过的:
strtotime("+24 months", $mydate);
如果我的日期为20th Dec 2013
,那么计算的日期将为10th Dec 2015
,而我的预期日期为20th Dec 2015
。
我知道,幕后背后是什么:
2 Year: 365 days x 2 = 730 days
24 Months: 24 x 30days = 720 days
这让我失踪了10天。但是如何克服这个问题。
在Java
我们有Calendar
类,负责此类计算。但是,我在这里找不到任何东西。
这个问题可以解决吗?或者我需要手动处理它?</ p>
答案 0 :(得分:2)
你应该总是使用DateTime()类来做类似的事情。
即
$date = new DateTime("UTC");
//get date in 24months time:
$date->add(new DateInterval("P24M"));
//output date:
echo $date->format("d/m/Y H:i:s");
通过使用DateTime和DateInterval类,您可以确定它将考虑闰年和日期中的其他此类违规行为。
详情请见:http://php.net/manual/en/class.datetime.php
我希望这会有所帮助。
答案 1 :(得分:0)
DateTime
应该在这里完美运作:
$date = new DateTime("20th Dec 2013");
echo $date->format("d-m-Y");
$date->add(new DateInterval('P24M'));
echo $date->format("d-m-Y");
输出:
20-12-2013
20-12-2015
<强> Demo 强>
<强>旁注:强>
我无法通过以下方式重现您的错误:
echo date("d-m-Y", strtotime("+24 months", $mydate = strtotime("2013-12-20")));
答案 2 :(得分:0)
$mydate = "2014-10-01";
echo date('d-m-Y',strtotime("+24 months", strtotime($mydate)));