поэтому я преобразовал эту строку в timestamp, используя strtotime:
strtotime("1 Nov, 2001");
который приводит к отметке времени 1320177660
но затем, когда я попытался преобразовать 1320177660 в обычный формат даты снова, используя онлайн-конвертер временной метки, год закончился 2011 годом, а не 2001 …
Что я делаю не так?
Как отмечает @Evan Mulawski, «2001» интерпретируется как время, а не год. Выньте запятую, чтобы PHP интерпретировал «2001» как год:
<?php $ts = strtotime("1 Nov 2001"); echo $ts . "\n"; $st = strftime("%B %d, %Y, %H:%M:%S", $ts); echo $st . "\n"; ?>
Вывод:
1004590800
01 ноября 2001 года, 00:00:00
Вы не делаете ничего плохого – это просто, что strtotime не является непогрешимым.
Таким образом, если вы знаете, что строка всегда будет в определенном формате, иногда рекомендуется анализировать дату самостоятельно или если вы используете PHP 5.3.x, вы можете использовать DateTime :: createFromFormat для синтаксического анализа строки для вы.