Парсинг даты Aug-24-2009 at 12:04 PDT

Мне поставили задачу распарсить один крупный иностранный сайт скандинавского аукциона. Время на страницах выглядит так: “Aug-24-2009 at 12:04 PDT“, а нужно перевести его в стандартный unix timestamp.

Сокращение PDT означает Pacific Daylight Time.

Вот такая функция возвращает timestamp для вышепреведённого формата даты:
[cc lang=”php” line_numbers=”false”]

/**
* Перевод строкового представления даты в timestamp
* Пример допустимого аргумента: Dec-25-2008 at 01:18 PDT
* @param string $PDT_time дата/время которую нужно обработать
* @return int unix timestamp
*/
function pdt2timestamp($PDT_time) {
preg_match_all(‘/(.+)-([0-9]+)-([0-9]+).+([0-9:]{5})/’, $PDT_time, $match);
$result[‘mouth’] = @$match[1][0];
$result[‘day’] = @$match[2][0];
$result[‘year’] = @$match[3][0];
$result[‘time’] = @$match[4][0];
$o = “{$result[‘mouth’]} {$result[‘day’]} {$result[‘year’]} {$result[‘time’]}”;
$e = strtotime($o);
return $e;
}
[/cc]

Например,
[cc lang=”php” line_numbers=”false”]
$ts = pdt2timestamp(“Aug-24-2009 at 12:04 PDT”);
$strts = date(“D, d M Y H:i:s”, $ts);
echo “timestamp: {$ts}, string: {$strts} “;
[/cc]
выведет:

timestamp: 1251101040, string: Mon, 24 Aug 2009 12:04:00 

Вот уж не ожидал что так легко
будет разобрать строку и сделать
из неё дату