php日期添加跳过天

时间:2015-02-16 08:40:02

标签: php date

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

3 个答案:

答案 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")));

请参阅:     http://3v4l.org/HURAt

答案 2 :(得分:0)

$mydate = "2014-10-01";
echo date('d-m-Y',strtotime("+24 months", strtotime($mydate)));