hola chicos, necesito formatear el tiempo a valores como este:
00:00 ==> 0 00:15 ==> 0.25 00:30 ==> 0.5 00:45 ==> 0.75 .... 16:00 ==> 16 16:15 => 16.25 16:30 => 16.5 16:45 => 16.75ya usé el caso del interruptor:
switch (time) { case "00:00": return { value: 0, time: time }; case "00:30": return { value: 0.5, time: time }; case "01:00": return { value: 1, time: time }; case "01:30": return { value: 1.5, time: time }; case "02:00": return { value: 2, time: time }; case "02:30": return { value: 2.5, time: time }; case "03:00": return { value: 3, time: time }; ....pero creo que no está optimizado ¿alguna idea mejor?
Podrías dividir los minutos por la duración de la hora.
const formatTime = s => +s.split(':').map((d, i) => i ? d / 0.6 : d).join('.'); console.log(formatTime('00:45')); console.log(formatTime('01:15'));Podría usar replace callback, reemplazando todo excepto un cero inicial, luego formatear los dos componentes a un número decimal y formatear con 2 decimales (usando toFixed ). Esto funciona para todos los minutos (de 0 a 59).
Manifestación:
const formatTime = s => s.replace(/([1-9]\d?):(.+)/, (_, m, s) => (+m+s/60).toFixed(2)); // Demo for (let min = 0; min < 40; min++) { const time = '09:' + (min < 10 ? "0" + min : min); console.log(time, "=>", formatTime(time)); }