Análisis de cadena de fecha de Javascript
Una de mis funciones favoritas de PHP es el strtotime función. Esta función le permite pasar una cadena de fecha y devolver una marca de tiempo de Unix
$time = strtotime('2021-04-01');
echo date('c',$time),"\n";
// outputs
// 2021-04-01T00:00:00-07:00
Lo bueno de esto es que funciona con una variedad de formatos de fecha.
$time = strtotime('04/01/2021');
echo date('c',$time),"\n";
// outputs
// 2021-04-01T00:00:00-07:00
Y no se preocupe:si son todos objetos todo el tiempo, el mismo comportamiento de análisis de cadenas funciona con DateTime de PHP. clase.
$date = new DateTime('April 1, 2020');
echo $date->format('c'),"\n";
// outputs
// 2020-04-01T00:00:00-07:00
Con strtotime si está trabajando con datos incompletos (en otras palabras, datos reales), tiene un poco más de confianza en que su código seguirá funcionando cuando/si su código encuentra un formato de fecha inesperado.
Fecha.parse de Javascript
Javascript tiene una funcionalidad similar integrada en su Date objeto. Desafortunadamente, hay algunos casos extraños en torno a las zonas horarias que lo hacen poco confiable. Todos los siguientes ejemplos usan un REPL de Node.js 14.2, pero deberían aplicarse en general a las versiones modernas de javascript.
En javascript, puede usar el Date.parse para analizar automáticamente una cadena de fecha y recuperar una marca de tiempo de Unix, o puede pasar una cadena directamente al Date función constructora del objeto.
$ node
Welcome to Node.js v14.2.0.
Type ".help" for more information.
> Date.parse('April 1, 2021')
1617260400000
> new Date('April 1, 2021')
2021-04-01T07:00:00.000Z
Inmediatamente vemos algunas pequeñas diferencias con respecto a strtotime . Primero, javascript informa sus marcas de tiempo de época de Unix en milisegundos, no en segundos. En segundo lugar, el formato de fecha ISO de javascript (el 'c' formato en PHP stringToTime ) siempre informa utilizando la hora UTC (indicada por el Z final) ), donde PHP informa el desplazamiento de la zona horaria desde UTC. Así que estas dos cadenas de fecha ISO
