PHP strtotime () ничего не выводит

Вот мой PHP-код:

echo '<br />1. '.$w_time_no; echo '<br />2. '.strtotime($w_time_no); echo '<br />3. '.date('G:i', strtotime($w_time_no)); 

Вот что я получаю:

 1. 0000-00-00 22:00:00 2. 3. 2:00 

Почему strtotime () ничего не выводит сам по себе? Что-то не так с настройками сервера? Сервер: Apache / 2.2.11 (Win32), PHP 5.2.10, версия клиента MySQL: 5.0.51a.

strtotime ничего не выводит, btw: он возвращает false в случае ошибки; см. руководство :

Возвращаемые значения

Возвращает временную метку успеха, в противном случае FALSE. До PHP 5.1.0 эта функция вернет -1 при сбое.

Что не выводит ничего, это echo : false считается пустой строкой, и ничего не выводится.

Документация strtotime также дает допустимый диапазон для дат:

Примечание: действительный диапазон временной метки, как правило, от Fri, 13 Dec 1901 20:45:54 UTC to Tue, 19 Jan 2038 03:14:07 UTC. (Это даты, которые соответствуют минимальным и максимальным значениям для 32-разрядного целого числа со знаком.) Кроме того, не все платформы поддерживают отрицательные метки времени, поэтому ваш диапазон дат может быть ограничен не раньше, чем эпоха Unix. Это означает, что, например, даты до 1 января 1970 г. не будут работать в Windows, некоторых дистрибутивах Linux и нескольких других операционных системах. Однако PHP 5.1.0 и более новые версии преодолевают это ограничение.

'0000-00-00' находится за пределами этого диапазона, поэтому он не считается действительной датой; следовательно, значение false возврата.

В качестве побочного элемента, чтобы действительно знать, что внутри переменной, вы можете использовать var_dump .
В качестве bnus, используемого с Xdebug , он даст вам неплохую продукцию 😉

0000-00-00 не является действительной датой.

date () дает результат, потому что он интерпретирует время ввода как 0 и компенсирует часовой пояс вашего сервера, я бы предположил. Готов поспорить, что date('Ymd H:i', strtotime(...)) дала бы 1970-01-01 2:00

Вы принимаете strtotime() за time() .

strtotime буквально соответствует времени, ему нужна строка для преобразования ….. ко времени.

Возвращает временную метку успеха, в противном случае FALSE . До PHP 5.1.0 эта функция вернет -1 при сбое.

Поэтому он не проверяет эту временную строку.