2009-11-04 9 views
5

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

2009-11-04T19:55:41Z 

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

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

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

ответ

12

strtotime является прекрасной функцией для преобразования форматов дат в Unix временных метки.

Это даст вам то, что вы после:

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

Помните, что 'strtotime' использует часовой пояс можно найти (например, в переменной окружения' TZ'. Документация по функциям не дает никаких указателей на то, что происходит с отметками времени, которые включают информацию о часовом поясе. – Joey

+0

отлично поработал :) спасибо –

0

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

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

Это стандарт ISO 8601 в сочетании формат даты и времени приведены в формате UTC (отсюда и Z).

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

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

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

2

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

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

насчет

\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'); 
+1

Не знал, что этот атом постоянный, полезный! – COil

Смежные вопросы