我有一个日期,需要添加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
类,它负责这些计算。然而,我在这里什么也找不到。
这个问题能解决吗。?或者我需要手动处理?
您应该始终使用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
我希望这能有所帮助。
$mydate = "2014-10-01";
echo date('d-m-Y',strtotime("+24 months", strtotime($mydate)));
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
演示
旁注:
我无法用重现您的错误
echo date("d-m-Y", strtotime("+24 months", $mydate = strtotime("2013-12-20")));
请参阅:http://3v4l.org/HURAt