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?
javascript
datetime
milliseconds
cheliyan
fuente
fuente
Convertir el tiempo en milisegundos a un 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" } }
fuente
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);
fuente
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:
fuente
-3000
debería mostrarse-00:03
pero regresa-1:0-03
.Aqui esta mi solucion
let h,m,s; h = Math.floor(timeInMiliseconds/1000/60/60); m = Math.floor((timeInMiliseconds/1000/60/60 - h)*60); s = Math.floor(((timeInMiliseconds/1000/60/60 - h)*60 - m)*60);
// para obtener el formato de hora 00:00:00
s < 10 ? s = `0${s}`: s = `${s}` m < 10 ? m = `0${m}`: m = `${m}` h < 10 ? h = `0${h}`: h = `${h}` console.log(`${s}:${m}:${h}`);
fuente
s = `${s < 10 ? '0': ''}${s}`
Lo siento, llego tarde a la fiesta. La respuesta aceptada no fue suficiente para mí, así que la escribí yo mismo.
Salida:
Código (mecanografiado):
function timeConversion(duration: number) { const portions: string[] = []; const msInHour = 1000 * 60 * 60; const hours = Math.trunc(duration / msInHour); if (hours > 0) { portions.push(hours + 'h'); duration = duration - (hours * msInHour); } const msInMinute = 1000 * 60; const minutes = Math.trunc(duration / msInMinute); if (minutes > 0) { portions.push(minutes + 'm'); duration = duration - (minutes * msInMinute); } const seconds = Math.trunc(duration / 1000); if (seconds > 0) { portions.push(seconds + 's'); } return portions.join(' '); } console.log(timeConversion((60 * 60 * 1000) + (59 * 60 * 1000) + (59 * 1000))); console.log(timeConversion((60 * 60 * 1000) + (59 * 60 * 1000) )); console.log(timeConversion((60 * 60 * 1000) )); console.log(timeConversion((60 * 60 * 1000) + (59 * 1000))); console.log(timeConversion( (59 * 60 * 1000) + (59 * 1000))); console.log(timeConversion( (59 * 1000)));
fuente
Los fragmentos 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
fuente
return (h < 10 ? "0" + h : h) + ":" + (m < 10 ? "0" + m : m) + ":" + (s < 10 ? "0" + s : s);
, porque es mucho mejor hacer esto con matemáticas que con un montón de manipulación de cadenas.Necesitaba tiempo solo hasta un día, 24 horas, esta fue mi opinión:
const milliseconds = 5680000; const hours = `0${new Date(milliseconds).getHours() - 1}`.slice(-2); const minutes = `0${new Date(milliseconds).getMinutes()}`.slice(-2); const seconds = `0${new Date(milliseconds).getSeconds()}`.slice(-2); const time = `${hours}:${minutes}:${seconds}` console.log(time);
también podría obtener días de esta manera si es necesario.
fuente
Esta solución usa uno
function
para dividir milisegundos en aparts object
, y otrofunction
para formatearparts object
.Creé 2 funciones de formato, una como lo solicitaste y otra que imprime una cadena amigable y considerando singular / plural, e incluye una opción para mostrar milisegundos.
function parseDuration(duration) { let remain = duration let days = Math.floor(remain / (1000 * 60 * 60 * 24)) remain = remain % (1000 * 60 * 60 * 24) let hours = Math.floor(remain / (1000 * 60 * 60)) remain = remain % (1000 * 60 * 60) let minutes = Math.floor(remain / (1000 * 60)) remain = remain % (1000 * 60) let seconds = Math.floor(remain / (1000)) remain = remain % (1000) let milliseconds = remain return { days, hours, minutes, seconds, milliseconds }; } function formatTime(o, useMilli = false) { let parts = [] if (o.days) { let ret = o.days + ' day' if (o.days !== 1) { ret += 's' } parts.push(ret) } if (o.hours) { let ret = o.hours + ' hour' if (o.hours !== 1) { ret += 's' } parts.push(ret) } if (o.minutes) { let ret = o.minutes + ' minute' if (o.minutes !== 1) { ret += 's' } parts.push(ret) } if (o.seconds) { let ret = o.seconds + ' second' if (o.seconds !== 1) { ret += 's' } parts.push(ret) } if (useMilli && o.milliseconds) { let ret = o.milliseconds + ' millisecond' if (o.milliseconds !== 1) { ret += 's' } parts.push(ret) } if (parts.length === 0) { return 'instantly' } else { return parts.join(' ') } } function formatTimeHMS(o) { let hours = o.hours.toString() if (hours.length === 1) hours = '0' + hours let minutes = o.minutes.toString() if (minutes.length === 1) minutes = '0' + minutes let seconds = o.seconds.toString() if (seconds.length === 1) seconds = '0' + seconds return hours + ":" + minutes + ":" + seconds } function formatDurationHMS(duration) { let time = parseDuration(duration) return formatTimeHMS(time) } function formatDuration(duration, useMilli = false) { let time = parseDuration(duration) return formatTime(time, useMilli) } console.log(formatDurationHMS(57742343234)) console.log(formatDuration(57742343234)) console.log(formatDuration(5423401000)) console.log(formatDuration(500)) console.log(formatDuration(500, true)) console.log(formatDuration(1000 * 30)) console.log(formatDuration(1000 * 60 * 30)) console.log(formatDuration(1000 * 60 * 60 * 12)) console.log(formatDuration(1000 * 60 * 60 * 1))
fuente
Código legible por humanos para salida legible por humanos y puede extender esto a años luz o nanosegundos o lo que sea de manera muy intuitiva. Obviamente, querrá convertir esto en una función y reutilizar algunas de esas llamadas de módulo intermedio.
second = 1000 minute = second * 60 hour = minute * 60 day = hour * 24 test = 3 * day + 2 * hour + 11 * minute + 58 * second console.log(Math.floor(test / day)) console.log(Math.floor(test % day / hour)) console.log(Math.floor(test % day % hour / minute)) console.log(Math.floor(test % day % hour % minute / second))
fuente
Basado en la respuesta de @Chand. Esta es la implementación en TypeScript. Un poco más seguro que los tipos coercitivos en JS. Si elimina el tipo, la anotación debe ser JS válida. También usando nuevas funciones de cadena para normalizar el tiempo.
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}`; }
fuente
Trabajó para mi
msToTime(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 == "00" ? m + ':' + s : h + ':' + m + ':' + s; }
fuente
mi solución
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' });
textTime se convertirá en ' 7.04 AM '
fuente
Ampliando la respuesta de @ Rick, prefiero algo como esto:
function msToReadableTime(time){ const second = 1000; const minute = second * 60; const hour = minute * 60; let hours = Math.floor(time / hour % 24); let minutes = Math.floor(time / minute % 60); let seconds = Math.floor(time / second % 60); return hours + ':' + minutes + ":" + seconds; }
fuente
Si está usando mecanografiado, esto podría ser bueno para usted
enum ETime { Seconds = 1000, Minutes = 60000, Hours = 3600000, SecInMin = 60, MinInHours = 60, HoursMod = 24, timeMin = 10, } interface ITime { millis: number modulo: number } const Times = { seconds: { millis: ETime.Seconds, modulo: ETime.SecInMin, }, minutes: { millis: ETime.Minutes, modulo: ETime.MinInHours, }, hours: { millis: ETime.Hours, modulo: ETime.HoursMod, }, } const dots: string = ":" const msToTime = (duration: number, needHours: boolean = true): string => { const getCorrectTime = (divider: ITime): string => { const timeStr: number = Math.floor( (duration / divider.millis) % divider.modulo, ) return timeStr < ETime.timeMin ? "0" + timeStr : String(timeStr) } return ( (needHours ? getCorrectTime(Times.hours) + dots : "") + getCorrectTime(Times.minutes) + dots + getCorrectTime(Times.seconds) ) }
fuente
En mi implementación usé Moment.js:
export default (value) => const duration = moment.duration(value); const milliseconds = duration.milliseconds(); const seconds = duration.seconds(); const minutes = duration.minutes(); const hours = duration.hours(); const day = duration.days(); const sDay = `${day}d `; const sHours = (hours < 10) ? `0${hours}h ` : `${hours}h `; const sMinutes = (minutes < 10) ? `0${minutes}' ` : `${minutes}' `; const sSeconds = (seconds < 10) ? `0${seconds}" ` : `${seconds}" `; const sMilliseconds = `${milliseconds}ms`; ... }
Una vez que obtuve las cuerdas, las compuse como quisiera.
fuente
var d = new Date();//Wed Jun 17 2020 13:27:55 GMT+0530 (India Standard Time) var n = d.getTime();//1592380675409 this value is store somewhere //function call console.log(convertMillisecToHrMinSec(1592380675409)); var convertMillisecToHrMinSec = (time) => { let date = new Date(time); let hr = date.getHours(); let min = date.getMinutes(); let sec = date.getSeconds(); hr = (hr < 10) ? "0"+ hr : hr; min = (min < 10) ? "0"+ min : min; sec = (sec < 10) ? "0"+ sec : sec; return hr + ':' + min + ":" + sec;//01:27:55 }
fuente