w3schools hora con php timestamp

hora - Strtotime PHP devuelve resultados incorrectos



strtotime php hora (3)

Cuando tienes una coma después del mes, asume que 2010 es hora militar en lugar de año. Si desea que interprete 2010 como el año, omita la coma.

strtotime (''3 de enero de 2010'') devuelve 1230993600 en GMT + 5: 30.

Si bien de acuerdo con esto , la marca de tiempo de Unix 1230993600 es el 3 de enero de 2009 . Así que está apagado por un año.

Está sucediendo en PHP 5.2.6 y 5.2.11.


El problema es el , en la cadena de fecha. Parece separar la fecha de los elementos de tiempo en su cadena, como

echo date(''Y-m-d H:i:s'', strtotime(''3rd January, 2010''));

devoluciones

2009-01-03 20:10:00

mientras

echo date(''Y-m-d H:i:s'', strtotime(''3rd January 2010''));

( , eliminado) devuelve la fecha correcta:

2010-01-03 00:00:00


strtotime () no es infalible. Es un analizador contextual que intenta convertir las descripciones en inglés de una fecha en una marca de tiempo. El formato que está utilizando parece no ser adecuado para el análisis correcto.

Puedes ver las diferencias en los siguientes ejemplos:

echo strtotime(''3rd January,2010'')."<BR>"; echo strtotime(''3 January, 2010'')."<BR>"; echo strtotime(''January 3rd, 2010'')."<BR>"; echo strtotime(''January 3, 2010'')."<BR>";

resultados en:

1231042200 1231042200 1262505600 1262505600

Los dos primeros devuelven una marca de tiempo diferente a los dos últimos. De los formatos, los dos últimos son más semánticamente (en inglés) correctos, y trataría de usarlos en su lugar.

EDITAR

Como han señalado otros carteles, la coma confunde al analizador sobre la parte de la fecha debido al orden de los tokens de fecha.

echo strtotime(''3rd January 2010'')."<BR>";

devuelve la marca de tiempo correcta para su formato.