Recibo la fecha de entrada como se muestra a continuación.
2022-05-05 18:08:13.311951 +0:00Y estoy tratando de convertir esto al siguiente formato que sigue el formato ISO8601.
2022-05-05T18:08:13.311951+00:00¿Hay alguna forma en JS de que podamos implementar esta lógica? Conozco la consulta sql equivalente que se muestra a continuación para lograrlo, pero me confundí con js para lograr lo mismo.
select to_char(CREATE_DT,'YYYY-MM-DD"T"hh24:mi:sstzh:tzm') CREATE_DT from TABLE_NAME;Puede probar una expresión regular, sin embargo, puede ser un poco compleja y no tan mantenible. Una alternativa es analizar la cadena en sus partes y reconstruirla, por ejemplo
// Format 2022-05-05 18:08:13.311951 +0:00 as // 2022-05-05T18:08:13.311951+00:00 function reformatTimestamp (ts) { let pad = c => c.padStart(2,'0'); // Match one or more digits OR space followed by + or - let [Y, M, D, H, m, s, ms, oSign, oH, om] = ts.match(/\d+| [-+]/g) || []; return `${Y}-${M}-${D}T${H}:${m}:${s}.${ms}${oSign.trim()}${pad(oH)}:${om}`; } ['2022-05-05 18:08:13.311951 -8:00', '2022-05-05 18:08:13.311951 +5:30', '2022-05-05 18:08:13.311951 -10:00', '2022-05-05 18:08:13.311951 +10:00'].forEach(ts => console.log(ts + '\n' + reformatTimestamp(ts)) );