Obtengo de una API una cadena de fecha que tiene este formato: DD_MM_YYYY_hh_mm__ss
Quiero mostrar la cadena en este formato: DD/MM/YYYY hh:mm:ss
¿Cómo puedo lograr eso?
Puede reemplazar las secuencias de guiones bajos con los caracteres apropiados según su posición dentro de la cadena de entrada:
function convertDate(date) { return date.replace(/_+/g, (_, n) => (n < 10) ? "/" : (n > 10) ? ":" : " "); } console.log(convertDate("DD_MM_YYYY_hh_mm__ss"));O un poco más simple:
function convertDate(date) { let n = 0; return date.replace(/_+/g, () => "// ::"[n++]); } console.log(convertDate("DD_MM_YYYY_hh_mm__ss"));De una sola mano:
const str = '18_03_2022_12_21_34' // to string const res = str.split('_') const r = res.slice(0, 3).join('/') + ' ' + res.slice(-3).join(':') console.log(r) // or to date console.log(new Date(res.slice(0, 3).join('/').split('/').reverse().join('/') + ' ' + res.slice(-3).join(':')))Filtro Vue
Código:
Vue.filter('stringTodateTime', function ( dateTimeString ) { if (!dateTimeString) return '' return dateTimeString.replace(/_+/g, (_, n) => (n < 10) ? "/" : (n > 10) ? ":" : " "); })Uso:
{{ 12_04_2021_12_59_34 | stringTodateTime }}