我有一个像这样使用PHP日期时间设置日期..
$originaldate = 2019-01-10 17:52:17
$converted = DateTime::createFromFormat("Y-m-d H:i:s", $originaldate);
日期已成功转换为PHP DateTime对象,现在我正在尝试添加创建2个新日期,这些日期比此日期早6个月和1年。
实现这一目标的最佳途径是什么?
答案 0 :(得分:5)
答案 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'));