PHP strtotime () no genera nada

Aquí está mi código PHP:

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

Eso es lo que obtengo:

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

¿Por qué strtotime () no genera nada por sí mismo? ¿Hay algún problema con la configuración del servidor? Servidor: Apache / 2.2.11 (Win32), PHP 5.2.10, versión de cliente MySQL: 5.0.51a.

strtotime no ” strtotime ” nada, por cierto: devuelve false en caso de error; ver el manual :

Valores de retorno

Devuelve una marca de tiempo en caso de éxito, FALSO en caso contrario. Anterior a PHP 5.1.0, esta función devolvería -1 en caso de falla.

Lo que no produce nada es echo : false se considera como una cadena vacía y no se sobrescribe nada.

La documentación de strtotime también proporciona el rango válido para las fechas:

Nota: El rango válido de una indicación de fecha y hora es típicamente de viernes, 13 de diciembre de 1901, 20:45:54 UTC a martes, 19 de enero de 2038, 03:14:07 UTC. (Estas son las fechas que corresponden a los valores mínimo y máximo para un entero de 32 bits con signo.) Además, no todas las plataformas admiten marcas de tiempo negativas, por lo tanto, su intervalo de fechas puede limitarse a no antes de la época de Unix. Esto significa que, por ejemplo, las fechas anteriores al 1 de enero de 1970 no funcionarán en Windows, algunas distribuciones de Linux y algunos otros sistemas operativos. PHP 5.1.0 y versiones más nuevas superan esta limitación.

'0000-00-00' está fuera de este rango, por lo que no se considera una fecha válida; de ahí el false valor de retorno.

Como nota al margen, para saber realmente qué hay dentro de una variable, puedes usar var_dump .
Como un bnus, usado con Xdebug , obtendrá una salida de formato agradable 😉

0000-00-00 no es una fecha válida.

date () da un resultado porque interpreta el tiempo de entrada como 0 y compensa la zona horaria de tu servidor, supongo. Apuesto que esa date('Ymd H:i', strtotime(...)) daría 1970-01-01 2:00

Usted está confundiendo strtotime() por time() .

strtotime es literalmente de cadena en cadena, necesita una cadena para convertir ….. en tiempo.

Devuelve una marca de tiempo en caso de éxito, FALSE caso contrario. Anterior a PHP 5.1.0, esta función devolvería -1 en caso de falla.

Por lo tanto, no se puede validar esa cadena de tiempo.