strtotime() не является непогрешимым. Это контекстный анализатор, который пытается преобразовать английские описания даты в метку времени. Формат, который вы используете, кажется непригодным для правильного разбора.
Вы можете увидеть различия в следующих примерах:
echo strtotime('3rd January,2010')."<BR>";
echo strtotime('3 January, 2010')."<BR>";
echo strtotime('January 3rd, 2010')."<BR>";
echo strtotime('January 3, 2010')."<BR>";
приводит:
1231042200
1231042200
1262505600
1262505600
Первые два возврата другой временной метки, чем последние два. Из форматов последние два более семантически (по-английски) правильные, и я бы попытался их использовать.
EDIT
Как отметили другие плакаты, запятая путает парсер о дате части из-за того, ваши даты лексем.
echo strtotime('3rd January 2010')."<BR>";
возвращает правильную временную метку для вашего формата.
WFM на PHP 5.2.10-2ubuntu6.3: 'эхо StrToTime ('3 января 2010');' возвращает '1231009800' – 2009-12-10 22:29:41
На самом деле, в соответствии с этим сайтом, то Отметка времени Unix 1230993600 составляет 01/03/09 @ 8:40:00. –