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.