¿Cómo convertir una fecha como '2021-06-01T11:17:00-07:00' al estándar ISO? ¿Qué es este formato?
let date = new Date('2021-06-01T11:17:00-07:00'); console.log(date.getHours() + " :" + date.getMinutes());Debería llegar a las 11:17 pero volveré a las 23:47
Entonces, ¿algo va mal al comprender el formato correcto de la fecha?
Para hacer ingeniería inversa,
Si convierto fecha mi fecha esperada que es "2021-06-01 11:17:00" a IsoString, entonces el valor que obtengo es 2021-06-01T05:47:00.000Z que no es igual a 2021-06-01T11 :17:00-07:00
PD: por los comentarios, supe que este formato está en MST, que está 7 horas por detrás de UTC
La entrada especifica una zona horaria, por lo que especifica una hora en la que en Salt Lake City son las 11:17. Ese mismo momento corresponde a las 23:47 de Nueva Delhi, que es tu zona horaria.
Entonces, cuando le dice a JavaScript que lea la entrada, sabrá que es una especificación en la hora estándar de la montaña (-07:00) y almacenará la fecha en UTC. Cuando genera la fecha como lo hace, JavaScript usará su configuración regional y la generará como 23:47, que es exactamente el mismo momento que especifica la entrada.
Si desea que la hora salga como 11:17, aparentemente no desea considerar que es una hora local en Salt Lake City, pero ignórela y considere que son las 11:17 en su zona horaria.
En ese caso, debe cambiar la entrada y eliminar la especificación de zona horaria:
let date = new Date('2021-06-01T11:17:00'); // No time zone specified -> is interpreted as local time console.log(date.getHours() + " :" + date.getMinutes()); Si la cadena de entrada es variable, puede eliminar la zona horaria conservando solo los primeros 19 caracteres de la entrada antes de pasarla al constructor Date .
Pero tenga en cuenta que cuando quita la zona horaria, en realidad cambia la especificación de tiempo en la entrada a una diferente. Ya no es el mismo tiempo.
¿Has intentado usar la clase de fecha de javascript de Vanilla? Debería poder pasar eso al constructor y luego convertirlo al formato deseado. Por ejemplo: const date2 = new Date('1995-12-17T03:24:00');
Consulte https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date
También puede intentar usar la biblioteca Moment en Javascript, aunque muchas personas están tratando de alejarse de esto.