validacion - ¿Cómo convertir el tiempo en milisegundos en formato de horas, minutos, segundos en JavaScript?
validar formulario javascript html5 (7)
Tengo el tiempo en milisegundos, pero quiero el tiempo después de la conversión como 00:00:00
.
Ej: en milisegundos = 86400000. Quiero cuántas horas en milisegundos como, 00:00:00
¿Cómo conseguirlo en JavaScript?
¿Qué tal hacer esto creando una función en javascript como se muestra a continuación:
function msToTime(duration) {
var milliseconds = parseInt((duration % 1000) / 100),
seconds = parseInt((duration / 1000) % 60),
minutes = parseInt((duration / (1000 * 60)) % 60),
hours = parseInt((duration / (1000 * 60 * 60)) % 24);
hours = (hours < 10) ? "0" + hours : hours;
minutes = (minutes < 10) ? "0" + minutes : minutes;
seconds = (seconds < 10) ? "0" + seconds : seconds;
return hours + ":" + minutes + ":" + seconds + "." + milliseconds;
}
console.log(msToTime(300000))
Basado en la respuesta de @Chand. Esta es la implementación en Typescript. Un poco más seguro que los tipos de coacción en JS. Si elimina la anotación de tipo debe ser JS válido. También utiliza nuevas funciones de cadena para normalizar el tiempo.
var sunriseMills = 1517573074000; // sunrise in NewYork on Feb 3, 2018 - UTC time
var offsetCityMills = -5 * 3600 * 1000; // NewYork delay to UTC
var offsetDeviceMills = new Date().getTimezoneOffset() * 60 * 1000 ; // eg. I live in Romania (UTC+2) >> getTimezoneOffset() = 120
var textTime = new Date(sunriseMills + offsetCityMills + offsetDeviceMills)
.toLocaleTimeString(''en-US'', { hour: ''numeric'', minute: ''numeric'' });
Este vuelve el tiempo como videos de youtube.
function getYoutubeLikeToDisplay(millisec) {
var seconds = (millisec / 1000).toFixed(0);
var minutes = Math.floor(seconds / 60);
var hours = "";
if (minutes > 59) {
hours = Math.floor(minutes / 60);
hours = (hours >= 10) ? hours : "0" + hours;
minutes = minutes - (hours * 60);
minutes = (minutes >= 10) ? minutes : "0" + minutes;
}
seconds = Math.floor(seconds % 60);
seconds = (seconds >= 10) ? seconds : "0" + seconds;
if (hours != "") {
return hours + ":" + minutes + ":" + seconds;
}
return minutes + ":" + seconds;
}
Salida:
- getYoutubeLikeToDisplay (129900) = "2:10"
- getYoutubeLikeToDisplay (1229900) = "20:30"
- getYoutubeLikeToDisplay (21229900) = "05:53:50"
Los fragmentos de código anteriores no funcionan para casos con más de 1 día (simplemente se ignoran).
Para esto puedes usar:
function convertMS(ms) {
var d, h, m, s;
s = Math.floor(ms / 1000);
m = Math.floor(s / 60);
s = s % 60;
h = Math.floor(m / 60);
m = m % 60;
d = Math.floor(h / 24);
h = h % 24;
h += d * 24;
return h + '':'' + m + '':'' + s;
}
Gracias a https://gist.github.com/remino/1563878
Para convertir el tiempo en milisegundos al formato legible por humanos.
function timeConversion(millisec) {
var seconds = (millisec / 1000).toFixed(1);
var minutes = (millisec / (1000 * 60)).toFixed(1);
var hours = (millisec / (1000 * 60 * 60)).toFixed(1);
var days = (millisec / (1000 * 60 * 60 * 24)).toFixed(1);
if (seconds < 60) {
return seconds + " Sec";
} else if (minutes < 60) {
return minutes + " Min";
} else if (hours < 24) {
return hours + " Hrs";
} else {
return days + " Days"
}
}
Tuve el mismo problema, esto es lo que terminé haciendo:
function parseMillisecondsIntoReadableTime(milliseconds){
//Get hours from milliseconds
var hours = milliseconds / (1000*60*60);
var absoluteHours = Math.floor(hours);
var h = absoluteHours > 9 ? absoluteHours : ''0'' + absoluteHours;
//Get remainder from hours and convert to minutes
var minutes = (hours - absoluteHours) * 60;
var absoluteMinutes = Math.floor(minutes);
var m = absoluteMinutes > 9 ? absoluteMinutes : ''0'' + absoluteMinutes;
//Get remainder from minutes and convert to seconds
var seconds = (minutes - absoluteMinutes) * 60;
var absoluteSeconds = Math.floor(seconds);
var s = absoluteSeconds > 9 ? absoluteSeconds : ''0'' + absoluteSeconds;
return h + '':'' + m + '':'' + s;
}
var time = parseMillisecondsIntoReadableTime(86400000);
alert(time);
mi solución
function displayTime(millisec: number) {
const normalizeTime = (time: string): string => (time.length === 1) ? time.padStart(2, ''0'') : time;
let seconds: string = (millisec / 1000).toFixed(0);
let minutes: string = Math.floor(parseInt(seconds) / 60).toString();
let hours: string = '''';
if (parseInt(minutes) > 59) {
hours = normalizeTime(Math.floor(parseInt(minutes) / 60).toString());
minutes = normalizeTime((parseInt(minutes) - (parseInt(hours) * 60)).toString());
}
seconds = normalizeTime(Math.floor(parseInt(seconds) % 60).toString());
if (hours !== '''') {
return `${hours}:${minutes}:${seconds}`;
}
return `${minutes}:${seconds}`;
}
textTime se convertirá en '' 7.04 AM ''