php日期添加跳过天


php date addition skipping days

我有一个日期,需要添加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