PHP datetime增加6个月和1年

时间:2018-01-11 12:48:57

标签: php datetime

我有一个像这样使用PHP日期时间设置日期..

$originaldate = 2019-01-10 17:52:17
$converted = DateTime::createFromFormat("Y-m-d H:i:s", $originaldate);

日期已成功转换为PHP DateTime对象,现在我正在尝试添加创建2个新日期,这些日期比此日期早6个月和1年。

实现这一目标的最佳途径是什么?

5 个答案:

答案 0 :(得分:5)

查看DateTime::add

$converted->add(new DateInterval("P18M")); // add 18 months

P18M表示18个月的间隔

答案 1 :(得分:2)

您可以clone创建副本并使用DateTime::modify更改新日期。

试试这个;

$sixMonths = clone $converted;
$sixMonths->modify('+6 months');

$oneYear = clone $converted;
$oneYear->modify('+1 year');

答案 2 :(得分:2)

您应该查看php类 DateInterval http://php.net/manual/en/class.dateinterval.php

以下是一个例子:

$converted = DateTime::createFromFormat("Y-m-d H:i:s", $originaldate); 
$converted1Year = $converted->add(new DateInterval("P1Y"));//add one year //object reference is the same so adding a year altered original object and a reference to it is passed back, not copied
$converted2 = DateTime::createFromFormat("Y-m-d H:i:s", $originaldate);
$converted6months = $converted2->add(new DateInterval("P6M")); // add 6 months

正如评论中所建议的那样 DateTimeImmutable 等价物:

$converted = DateTimeImmutable::createFromFormat("Y-m-d H:i:s", $originaldate); 
$converted1Year = $converted->add(new DateInterval("P1Y"));
$converted6Months = $converted->add(new DateInterval("P6M"));

答案 3 :(得分:1)

$converted = $converted->modify('+6 months');
$converted = $converted->modify('+1 year');

答案 4 :(得分:0)

像这样:

   $sixMonths = date('Y-m-d', strtotime($converted. ' + 6 months'));
   $oneYear = date('Y-m-d', strtotime($converted. ' + 1 year'));