Унифицировать форматы даты - как? - PullRequest
0 голосов
/ 21 ноября 2010

У меня есть два источника информации, и эти источники имеют даты в разных форматах.

Источник A Ср, 17 ноября 2010 12:14:10 + 0000 (из RSS-канала)

Источник B ГГГГ-ММ-ДД ЧЧ: ММ: СС (из mysql datetime)

Запрос: Я бы хотел упорядочить их по дате, чтобы получить только последние вхождения.

Но, и, говоря еще более сложно, те, которые хранятся в базе данных, должны учитывать ВРЕМЯ.Поскольку в один и тот же день может быть создано несколько записей.

У меня есть возможность выбора выходного формата mysql.У меня нет никакого контроля над выводом, исходящим из RSS-канала.

Это не кажется легким достижением, и мне интересно:

Что вы могли бы предложить здесь?

Обновление: Я думал о: Рабочий источник А, например: а) создание массива для месяцев и определенного номера месяца б) Извлечение двух символов после первой запятой (или трехесли мы посчитаем пробел) (день) c) конвертируем «Nov» в число (используя ранее созданный массив);г) Получить 2010 (не уверен, как);e) Поместите год слева, добавьте a - поместите месяц и a -, поместите день, добавьте 00: 00: 00

В это время они оба будут равны, и это могло бы помочь... Но я чувствую себя действительно глупо, когда все это делаю ...: s Разве не разумно?:)

Over - php (zend) / mysql

Большое спасибо, MEM

1 Ответ

3 голосов
/ 21 ноября 2010

Если вы можете использовать PHP 5.3, я бы использовал DateTime::createFromFormat() для нормализации форматов даты в общий формат.

Для дат MySQL:

$date = DateTime::createFromFormat('Y-m-d H:i:s', '2010-11-17');
echo $date->format('Y-m-d H:i:s');

Для формата RFC 2822 это должно работать (еще никогда не проверялось):

$date = DateTime::createFromFormat('r', 'Wed, 17 Nov 2010 12:14:10 +0000');
echo $date->format('Y-m-d H:i:s');
...