私はこの形式でフィードから日付を取得しています:
2009-11-04T19:55:41Z
date()
PHPの関数を使用してフォーマットしようとしていますが、次のエラーが表示されます。
date() は、パラメーター 2 が長いことを想定しており、オブジェクトは /bla/bla.php で指定されます
を使用してとpreg_replace()
を削除しようとしましたが、まだ機能しません。T
Z
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');
またはタイムゾーン付き(コメントで述べたように)
$dto = \DateTime::createFromFormat(
\DateTime::ATOM,
$ticketUpdatedAt,
new \DateTimeZone('UTC')
);
$ticketUpdatedDate = $dto->format('Y-m-d H:i:s');
使ってみてくださいstrptime
:
$date = strptime($str, "Y-m-d\TH:i:s\Z");
strtotime関数を使用できます。
echo date('Y-M-D', strtotime($feedDate));
これは、UTC (したがって Z) で指定された、日付と時刻を組み合わせた標準 ISO 8601 形式です。
を使用して解析できる場合があります
DateTime::createFromFormat('c', '2009-02-03');
または、それが失敗した場合 (PHP が ISO 8601 を理解していると主張している場合はそうではありません)、Z を "+00:00" に置き換えることができます。