将\ DateTimeImmutable转换为\ DateTime

时间:2017-01-23 17:19:16

标签: php datetime

如何将DateTimeImmutable对象转换为DateTime对象?

3 个答案:

答案 0 :(得分:13)

PHP中有DateTime::createFromImmutable()方法的拉取请求。它已被集成(12),后来无缘无故地removed。现在它似乎又回来了,但仅适用于PHP 7.3及更高版本。

所以这可能是目前最简单的方法:

$dateTime = new \DateTime();
$dateTime->setTimestamp($dateTimeImmutable->getTimestamp());

如果您需要包含时区信息:

$dateTime = new \DateTime(null, $dateTimeImmutable->getTimezone());
$dateTime->setTimestamp($dateTimeImmutable->getTimestamp());

答案 1 :(得分:1)

你可以做一个单行:

$dateTime = new DateTime("@{$dateTimeImmutable->getTimeStamp()}");

答案 2 :(得分:0)

要在适当的时区进行转换:

对于PHP> = 7.3

DateTime::createFromImmutable(dateTimeImmutable);

对于PHP <= 7.2

DateTime::createFromFormat(
   DateTimeInterface::ATOM, 
   $dateTimeImmutable->format(DateTimeInterface::ATOM)
);