Hola, tengo una fecha que llega con este formato 2020-05-25T20:11:38Z, y necesito convertir a 2020-05-25T21:11:38+01:00. En mi proyecto no está instalado moment.js es un gran proyecto, y los maestros no lo usan. hay algun lugar donde hacer este cambio?
Tengo la zona horaria para cada zona. Sé que hay opciones como esta getTimezoneOffset(); Y encontré en stackoverflow, pero no encontré ninguna respuesta en javascript para cambiar zulu a utc con compensación.
gracias por tus indicaciones
El formato "2020-05-25T20:11:38Z" es un formato ISO 8601 estándar común, también lo produce el método predeterminado Date.prototype.toString , sin embargo, solo tiene un desplazamiento UTC (+0).
El formato ISO 8601 anterior se analiza de manera confiable mediante analizadores incorporados razonablemente actuales (algunas implementaciones muy antiguas no lo analizarán correctamente), por lo que para obtener un objeto Fecha:
let date = new Date('2020-05-25T20:11:38Z');Se puede formatear para un desplazamiento +1 fijo ajustando la Fecha para el desplazamiento y luego formateándolo según sea necesario aprovechando el método predeterminado toISOString , por ejemplo
// Initial timestamp let s = '2020-05-25T20:11:38Z' // Convert s to a Date let d = new Date(s); // Show that it's the same date console.log(`Initial value: ${s}\n` + `Parsed value : ${d.toISOString()}`); // Create a new date with 1 hour added as 3,600,000 milliseconds let e = new Date(d.getTime() + 3.6e6); // Format and manually modify the offset part let timestamp = e.toISOString().replace('Z','+01:00'); console.log(`Adjusted timestamp: ${timestamp}`); // Parse back to date console.log(`Parsed to a Date : ${new Date(timestamp).toISOString()}`);La marca de tiempo resultante se puede analizar de nuevo a una fecha que representa el mismo instante en el tiempo que la cadena original (última línea).
Tenga en cuenta que la fecha ajustada solo se crea para formatear la marca de tiempo, no debe usarse para nada más.
Si, por otro lado, desea una función general para formatear fechas como ISO 8601 con el desplazamiento local, es probable que haya una respuesta en el formato de fecha de Javascript como ISO pero local que se adapte. Si es así, entonces esto es un duplicado, por ejemplo, esta respuesta o esta .
Además, hay una serie de bibliotecas que permitirán especificar el formato y la zona horaria como parámetros separados, así que considere usar una si va a formatear o manipular muchas fechas.