Как форматировать дату даты атома

Я получаю даты из фида в этом формате:

2009-11-04T19:55:41Z

Я пытаюсь отформатировать его с помощью функции date() в PHP, но я получаю сообщение об ошибке:

date() ожидает, что параметр 2 будет длинным, объект указан в /bla/bla.php

Я попытался использовать preg_replace() для удаления T и Z, но все равно не могу заставить его работать.

5 ответов

strtotime - замечательная функция для преобразования форматов даты в метки времени Unix.

Это даст вам то, что вам нужно:

date('my format here', strtotime('2009-11-04T19:55:41Z'));


Что насчет

\DateTime::createFromFormat(\DateTime::ATOM, $AtomDate); // converting Atom date to object

или

date(\DateTime::ATOM, $timestamp); // formatting timestamp to Atom time

или оба

$dto = \DateTime::createFromFormat(\DateTime::ATOM, $AtomDate);
date('d-M-Y H:i:s', $dto->getTimestamp()); // formatting Atom date to anything you want

или даже лучше

$dto = \DateTime::createFromFormat(\DateTime::ATOM, $AtomDate);
$formattedDate = $dto->format('d-M-Y H:i:s');


Попробуйте использовать strptime:

$date = strptime($str, "Y-m-d\TH:i:s\Z");


Это стандартный формат даты и времени ISO 8601, указанный в UTC (следовательно, Z).

Возможно, вы сможете проанализировать его с помощью

DateTime::createFromFormat('c', '2009-02-03');

или если это не сработает (не следует, если PHP утверждает, что понимает ISO 8601), вы можете заменить Z на "+00: 00".


Вы можете использовать функцию strtotime.

echo date('Y-M-D', strtotime($feedDate));

licensed under cc by-sa 3.0 with attribution.