如何将DateTimeImmutable
对象转换为DateTime
对象?
答案 0 :(得分:13)
PHP中有DateTime::createFromImmutable()
方法的拉取请求。它已被集成(1,2),后来无缘无故地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)
);