¿Cómo puedo convertir la cadena "X años Y meses Z días" a solo días en Javascript? ex:
var d="2 years 3 months 12 days";y debo tomar 832
Puede dividir la cadena y convertir
const date_str = "2 years 3 months 12 days" const splitted_str=date_str.split(" ") const years = parseInt(splitted_str[0]) const months = parseInt(splitted_str[2]) const days = parseInt(splitted_str[4]) const total_days=years*365+months*30+days console.log(total_days+" days")Puede usar RegExp.exec() , junto con Array.reduce() para obtener el resultado deseado.
Definimos los intervalos que consideramos junto con sus nombres y pesos, luego usamos .reduce() para sumar el total de días en la cadena.
function getTotalDays(str) { let intervals = [ { name: 'year', weight: 365 }, { name: 'month', weight: 30 }, { name: 'day', weight: 1 }]; return intervals.reduce((acc, { name, weight}) => { let res = new RegExp(`(\\d+)\\s${name}[\\s]?`).exec(str); return acc + (res ? res[1] * weight : 0); }, 0); } console.log(getTotalDays("2 years 3 months 12 days")) console.log(getTotalDays("6 months 20 days")) console.log(getTotalDays("1 year 78 days")) .as-console-wrapper { max-height: 100% !important; top: 0; }