Конвертировать дату в RSS PubDate RFC 822 PHP

У меня есть вопрос, который сводит меня с ума. Моя задача - проанализировать дату из API и преобразовать ее в формат RFC 822, потому что выходящий канал получает ошибку проверки

дата из API выглядит следующим образом:

<review created="2012-10-23 14:51:12.0">

У меня есть одна дата в описании, сделанном через substr

$xtime = substr($review["created"], 0, 16);
$jahr = substr($xtime,0,4);
$mon  = substr($xtime,5,2);
$tag  = substr($xtime,8,2);
$datneu = $tag.'.'.$mon.'.'.$jahr; 

эта дата будет отображаться как:

23.10.2012

Для публикации я сделал

$xtime = substr($review["created"], 0, 16);
$xxl = $pubtime . " GMT";

отображается как:

2012-10-23 14:51:12 GMT

И валидатор каналов W3C говорит, что он не валиден, потому что pubDate не в форме RFC 822

Sorry

This feed does not validate.

line 10, column 38: pubDate must be an RFC-822 date-time: 2012-10-29 11:51:23 GMT (5 occurrences) [help]

          <pubDate>2012-10-29 11:51:23 GMT</pubDate>

и это должно выглядеть так:

<pubDate>Wed, 02 Oct 2002 13:00:00 GMT</pubDate>

я могу представить себе хакерское решение для выражения sth вроде "if (month = 01){ actualmonth = Jan}", но я действительно не знаю, как сделать то же самое со днями,

Также я не слишком комфортно с PHP, но мне нужно решить это как можно скорее.

Надеюсь, что вы можете мне помочь, должно быть решение, которое я не нашел в похожих вопросах

С уважением, Джон

4 ответа

Решение

Посмотри на DateTime::createFromFormat() или же date_create_from_format,

http://fr2.php.net/manual/en/datetime.createfromformat.php

<?php
$date = date_create_from_format('Y-m-d H:i:s', '2012-10-23 14:51:12.0');
echo date_format($date, 'D, d M Y H:i:s');
?>

Посмотрите на возможные форматы даты

http://fr2.php.net/manual/en/function.date.php

РЕДАКТИРОВАТЬ: исправлено

Привет в PHP вы должны посмотреть на это: функция даты

Даааааа, это сработало для меня, удивительно!

для других точное решение для моего дела было


$before = "2012-10-23 14:51:12.0";


$timetwo = substr($before, 0, 16);

$timethree = date_create_from_format('Y-m-d H:i:s', $timetwo);

$timefinal = date_format(timethree, 'D, d M Y H:i:s');

$after = $timefinal . ' GMT' ; 


$after = "Mon, 23 Oct 2012 14:51:12 GMT";

Большое спасибо за быстрые ответы, вы потрясающие!

Это сработало для меня....

date("r", strtotime($yourdate))

$ yourdate был 2013-10-27, и я получил вс, 27 октября 2013 00:00:00 +0000

Другие вопросы по тегам