Tengo problemas para recuperar datos de una API y mostrarlos en la hora local.
API print to me zulu datetime 2021-11-12T14:30:29.000000Z varias soluciones para transformarlo a Europa/Roma gtm pero cualquiera funcionó, considerando también el horario de verano.
moment(d.acktime, "YYYYMMDDHHmmss").utcOffset('Europe/Rome').format("HH:mm"); moment(d.acktime, "YYYYMMDDHHmmss").tz("Europe/Rome").format("HH:mm");Los datos que se muestran son siempre los zulu tume que provienen de la API... ¿alguna idea?
Moment analizará un ISO 8601 sin especificar un formato:
Al crear un momento a partir de una cadena, primero verificamos si la cadena coincide con los formatos ISO 8601 conocidos, luego verificamos si la cadena coincide con el formato de fecha y hora RFC 2822 antes de pasar a la
new Date(string)si un formato conocido es extraviado.
Solo asegúrese de usar la biblioteca moment-timezone (con datos).
const d = { acktime: '2021-11-12T14:30:29.000000Z' }; const formatted = moment(d.acktime).tz('Europe/Rome').format('HH:mm'); console.log(formatted); // 15:30 (Rome is GMT+1) <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment-with-locales.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.34/moment-timezone-with-data.min.js"></script>El momento es EOL , por lo que recomiendo Luxon como alternativa. Es creado por los mismos desarrolladores. Configurar la zona horaria también es más fácil y no requiere complementos ni bibliotecas adicionales. Consulte "Zonas horarias y compensaciones" para obtener más información.
const { DateTime } = luxon; const d = { acktime: '2021-11-12T14:30:29.000000Z' }; const formatted = DateTime.fromISO(d.acktime).setZone('Europe/Rome').toFormat('HH:mm'); console.log(formatted); // 15:30 (Rome is GMT+1) <script src="https://cdnjs.cloudflare.com/ajax/libs/luxon/2.1.1/luxon.min.js"></script>