Как я могу преобразовать DateTimeImmutable
объект в DateTime
объект?
Преобразование \DateTimeImmutable в\DateTime
Ответ 1
Существует запрос на DateTime::createFromImmutable()
метода DateTime::createFromImmutable()
в PHP. Он был интегрирован (1, 2), чтобы быть удаленным позже без причины. Теперь, похоже, он вернулся, но только для PHP 7.3 и выше.
Так что это, наверное, самый простой способ прямо сейчас:
$dateTime = new \DateTime();
$dateTime->setTimestamp($dateTimeImmutable->getTimestamp());
Если вам нужно включить информацию о часовом поясе:
$dateTime = new \DateTime(null, $dateTimeImmutable->getTimezone());
$dateTime->setTimestamp($dateTimeImmutable->getTimestamp());
Ответ 2
Вы можете сделать это как однострочный:
$dateTime = new DateTime("@{$dateTimeImmutable->getTimeStamp()}");
Ответ 3
Чтобы конвертировать с правильным часовым поясом:
Для PHP> = 7.3
DateTime::createFromImmutable(dateTimeImmutable);
Для PHP <= 7.2
DateTime::createFromFormat(
DateTimeInterface::ATOM,
$dateTimeImmutable->format(DateTimeInterface::ATOM)
);