Investigué sobre cómo convertir la date en string en formato ISO , y encontré dos métodos para hacerlo que me dieron el mismo resultado '2022-07-29T06:46:54.085Z' :
(new Date()).toISOString()JSON.parse(JSON.stringify(new Date()))Pregunta:
JS hace dos enfoques/algoritmos para convertir la fecha o solo un código de función simplemente llama a un objeto diferente JSON o Date , si es así, ¿cuál es el mejor para usar?En primer lugar: menos código, más fácil de mantener
Por lo tanto, new Date().toISOString() es la forma más sencilla de devolver una cadena en formato ISO.
Con respecto a la pregunta:
No. El resultado es el mismo, debido a la lógica JSON.stringify debajo que devuelve:
JSON.stringify(new Date()) '"2022-07-29T18:58:14.411Z"'Porque:
Las instancias de Date implementan la función toJSON() devolviendo una cadena (igual que date.toISOString()). Por lo tanto, se tratan como cadenas.
Fuente: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
(new Date).toJSON() '2022-07-29T18:58:14.411Z'JSON.parse(JSON.stringify(new Date())) es igual que new Date().toJSON() . Y en los documentos para ese método podemos ver
Llamar a
toJSON()devuelve una cadena (usandotoISOString()) que representa el valor del objetoDate.
Entonces están teniendo exactamente el mismo resultado, llamar a toISOString() directamente es mucho más sencillo.
Si un objeto pasado a JSON.stringify tiene un método toJSON , entonces se usa para establecer el valor dentro del texto JSON (consulte el paso 2.b de SerializeJSONProperty ).
Las instancias de fecha tienen un método toJSON que se define para devolver el mismo valor que Date.prototype.toISOString .
Es decir
date.toJSON() === date.toISOString()por diseño.