new minutos hours horas from convertir convert javascript date time date-format time-format

minutos - javascript new date from string



Convertir segundos a HH-MM-SS con JavaScript? (28)

¿Has intentado agregar segundos a un objeto Date?

var dt = new Date(); dt.addSeconds(1234);

Una muestra: http://fiddle.jshell.net/YvE7x/2/

¿Cómo puedo convertir segundos a una cadena HH-MM-SS usando JavaScript?


¿No sabes datejs ? es un deber saber.

Usando datejs, solo escriba algo como:

(new Date).clearTime() .addSeconds(15457) .toString(''H:mm:ss'');

--actualizar

Hoy en día, date.js está desactualizado y no se mantiene, por lo tanto, use " momentjs ", que es mucho mejor como lo señaló TJ Crowder.


Al hablar sobre este viejo hilo, el OP declaró HH: MM: SS, y muchas de las soluciones funcionan, hasta que se da cuenta de que necesita más de 24 horas. Y tal vez no quieras más que una sola línea de código. Aqui tienes:

d=(s)=>{f=Math.floor;g=(n)=>(''00''+n).slice(-2);return f(s/3600)+'':''+g(f(s/60)%60)+'':''+g(s%60)}

Devuelve H +: MM: SS. Para usarlo, simplemente usa:

d(91260); // returns "25:21:00" d(960); // returns "0:16:00"

... Intenté que utilizara la menor cantidad de código posible, para un buen enfoque de una sola línea.


Aquí hay una extensión a la clase Número. toHHMMSS () convierte segundos en una cadena hh: mm: ss.

Number.prototype.toHHMMSS = function() { var hours = Math.floor(this / 3600) < 10 ? ("00" + Math.floor(this / 3600)).slice(-2) : Math.floor(this / 3600); var minutes = ("00" + Math.floor((this % 3600) / 60)).slice(-2); var seconds = ("00" + (this % 3600) % 60).slice(-2); return hours + ":" + minutes + ":" + seconds; } // Usage: [number variable].toHHMMSS(); // Here is a simple test var totalseconds = 1234; document.getElementById("timespan").innerHTML = totalseconds.toHHMMSS();

// HTML of the test <div id="timespan"></div>


Aquí hay una función para convertir segundos a formato hh-mm-ss según la respuesta de powtac here

jsfiddle

/** * Convert seconds to hh-mm-ss format. * @param {number} totalSeconds - the total seconds to convert to hh- mm-ss **/ var SecondsTohhmmss = function(totalSeconds) { var hours = Math.floor(totalSeconds / 3600); var minutes = Math.floor((totalSeconds - (hours * 3600)) / 60); var seconds = totalSeconds - (hours * 3600) - (minutes * 60); // round seconds seconds = Math.round(seconds * 100) / 100 var result = (hours < 10 ? "0" + hours : hours); result += "-" + (minutes < 10 ? "0" + minutes : minutes); result += "-" + (seconds < 10 ? "0" + seconds : seconds); return result; }

Ejemplo de uso

var seconds = SecondsTohhmmss(70); console.log(seconds); // logs 00-01-10


Como Cleiton señaló en su respuesta , momentjs puede usarse para esto:

moment().startOf(''day'') .seconds(15457) .format(''H:mm:ss'');


Después de mirar todas las respuestas y no ser feliz con la mayoría de ellas, esto es lo que se me ocurrió. Sé que llego muy tarde a la conversación, pero aquí está de todos modos.

function secsToTime(secs){ var time = new Date(); // create Date object and set to today''s date and time time.setHours(parseInt(secs/3600) % 24); time.setMinutes(parseInt(secs/60) % 60); time.setSeconds(parseInt(secs%60)); time = time.toTimeString().split(" ")[0]; // time.toString() = "HH:mm:ss GMT-0800 (PST)" // time.toString().split(" ") = ["HH:mm:ss", "GMT-0800", "(PST)"] // time.toTimeString().split(" ")[0]; = "HH:mm:ss" return time; }

Creo un nuevo objeto Date, cambio el tiempo a mis parámetros, convierto el Date Object en una cadena de tiempo y elimino el material adicional dividiendo la cadena y devolviendo solo la parte que necesita.

Pensé que compartiría este enfoque, ya que elimina la necesidad de acrobacias Regex, Lógica y Matemáticas para obtener los resultados en formato "HH: mm: ss", y en cambio se basa en métodos integrados.

Es posible que desee consultar la documentación aquí: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date


En una línea, usando la solución de TJ Crowder:

secToHHMMSS = seconds => `${Math.floor(seconds / 3600)}:${Math.floor((seconds % 3600) / 60)}:${Math.floor((seconds % 3600) % 60)}`

En una línea, otra solución que también cuenta días:

secToDHHMMSS = seconds => `${parseInt(seconds / 86400)}d ${new Date(seconds * 1000).toISOString().substr(11, 8)}`

Fuente: https://gist.github.com/martinbean/2bf88c446be8048814cf02b2641ba276


Esta función debería hacerlo:

var convertTime = function (input, separator) { var pad = function(input) {return input < 10 ? "0" + input : input;}; return [ pad(Math.floor(input / 3600)), pad(Math.floor(input % 3600 / 60)), pad(Math.floor(input % 60)), ].join(typeof separator !== ''undefined'' ? separator : '':'' ); }

Sin pasar un separador, usa : como el separador (predeterminado):

time = convertTime(13551.9941351); // --> OUTPUT = 03:45:51

Si desea usar - como separador, simplemente páselo como el segundo parámetro:

time = convertTime(1126.5135155, ''-''); // --> OUTPUT = 00-18-46

Ver también este violín .


Esto hace el truco:

function secondstotime(secs) { var t = new Date(1970,0,1); t.setSeconds(secs); var s = t.toTimeString().substr(0,8); if(secs > 86399) s = Math.floor((t - Date.parse("1/1/70")) / 3600000) + s.substr(2); return s; }

(Procedente de here )


Hay muchas opciones para resolver este problema, y ​​es obvio que hay una buena opción sugerida, pero quiero agregar un código más optimizado aquí.

function formatSeconds(sec) { return [(sec / 3600), ((sec % 3600) / 60), ((sec % 3600) % 60)] .map(v => v < 10 ? "0" + parseInt(v) : parseInt(v)) .filter((i, j) => i !== "00" || j > 0) .join(":"); }

si no quiere un formato de cero con menos de 10, puede usar

function formatSeconds(sec) { return parseInt(sec / 3600) + '':'' + parseInt((sec % 3600) / 60) + '':'' + parseInt((sec % 3600) % 60);

}

Código de muestra http://fiddly.org/1c476/1


He usado este código antes para crear un objeto de intervalo de tiempo simple:

function TimeSpan(time) { this.hours = 0; this.minutes = 0; this.seconds = 0; while(time >= 3600) { this.hours++; time -= 3600; } while(time >= 60) { this.minutes++; time -= 60; } this.seconds = time; } var timespan = new Timespan(3662);


No creo que ninguna característica incorporada del objeto Date estándar lo haga por usted de una manera que sea más conveniente que solo hacer las matemáticas usted mismo.

hours = Math.floor(totalSeconds / 3600); totalSeconds %= 3600; minutes = Math.floor(totalSeconds / 60); seconds = totalSeconds % 60;


Para cualquiera que use AngularJS, una solución simple es filtrar el valor con la API de fecha , que convierte milisegundos en una cadena basada en el formato solicitado. Ejemplo:

<div>Offer ends in {{ timeRemaining | date: ''HH:mm:ss'' }}</div>

Tenga en cuenta que esto espera milisegundos, por lo que es posible que desee multiplicar el tiempo Restante por 1000 si está convirtiendo desde segundos (como se formuló la pregunta original).


Prueba esto:

function toTimeString(seconds) { return (new Date(seconds * 1000)).toUTCString().match(/(/d/d:/d/d:/d/d)/)[0]; }


Puede lograr esto sin ninguna biblioteca externa de JavaScript con la ayuda del método JavaScript Date como el siguiente:

var date = new Date(null); date.setSeconds(SECONDS); // specify value for SECONDS here var result = date.toISOString().substr(11, 8);


Sé que esto es un poco viejo, pero ...

ES2015:

var toHHMMSS = (secs) => { var sec_num = parseInt(secs, 10) var hours = Math.floor(sec_num / 3600) % 24 var minutes = Math.floor(sec_num / 60) % 60 var seconds = sec_num % 60 return [hours,minutes,seconds] .map(v => v < 10 ? "0" + v : v) .filter((v,i) => v !== "00" || i > 0) .join(":") }

Saldrá:

toHHMMSS(13545) // 03:45:45 toHHMMSS(180) // 03:00 toHHMMSS(18) // 00:18


Solo quería dar una pequeña explicación a la buena respuesta anterior:

var totalSec = new Date().getTime() / 1000; var hours = parseInt( totalSec / 3600 ) % 24; var minutes = parseInt( totalSec / 60 ) % 60; var seconds = totalSec % 60; var result = (hours < 10 ? "0" + hours : hours) + "-" + (minutes < 10 ? "0" + minutes : minutes) + "-" + (seconds < 10 ? "0" + seconds : seconds);

En la segunda línea, dado que hay 3600 segundos en 1 hora, dividimos el número total de segundos por 3600 para obtener el número total de horas. Usamos parseInt para quitar cualquier decimal. Si totalSec fue 12600 (3 horas y media), entonces parseInt (totalSec / 3600) devolvería 3, ya que tendremos 3 horas completas. ¿Por qué necesitamos el% 24 en este caso? Si excedemos las 24 horas, digamos que tenemos 25 horas (90000 segundos), entonces el módulo aquí nos llevará de nuevo a 1, en lugar de devolver 25. Limita el resultado dentro de un límite de 24 horas, ya que hay 24 horas En un día.

Cuando ves algo como esto:

25 % 24

Piensa en esto, de esta manera:

25 mod 24 or what is the remainder when we divide 25 by 24


También puedes usar Sugar .

Date.create().reset().set({seconds: 180}).format(''{mm}:{ss}'');

Este ejemplo devuelve ''03: 00 ''.


También puedes usar el siguiente código:

int ss = nDur%60; nDur = nDur/60; int mm = nDur%60; int hh = nDur/60;


Usando momentjs :

moment().format(''hh:mm:ss'');


Versión fácil de seguir para noobies:

var totalNumberOfSeconds = YOURNUMBEROFSECONDS; var hours = parseInt( totalNumberOfSeconds / 3600 ); var minutes = parseInt( (totalNumberOfSeconds - (hours * 3600)) / 60 ); var seconds = Math.floor((totalNumberOfSeconds - ((hours * 3600) + (minutes * 60)))); var result = (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds); console.log(result);


a continuación está el código dado que convertirá los segundos en formato hh-mm-ss:

var measuredTime = new Date(null); measuredTime.setSeconds(4995); // specify value of SECONDS var MHSTime = measuredTime.toISOString().substr(11, 8);

Obtenga un método alternativo de Convertir segundos a formato HH-MM-SS en JavaScript


new Date().toString().split(" ")[4];

resultado 15:08:03


usando momentjs para cálculo único

var number = 10000(milliseconds); var momentObject = moment.duration(number); var output = momentObject.hours()+"HH"+momentObject.minutes()+"MM"+minuteObject.seconds()+"S"


var timeInSec = "661"; //even it can be string String.prototype.toHHMMSS = function () { /* extend the String by using prototypical inheritance */ var seconds = parseInt(this, 10); // don''t forget the second param var hours = Math.floor(seconds / 3600); var minutes = Math.floor((seconds - (hours * 3600)) / 60); var seconds = seconds - (hours * 3600) - (minutes * 60); if (hours < 10) {hours = "0"+hours;} if (minutes < 10) {minutes = "0"+minutes;} if (seconds < 10) {seconds = "0"+seconds;} var time = hours+'':''+minutes+'':''+seconds; return time; } alert("5678".toHHMMSS()); // "01:34:38" console.log(timeInSec.toHHMMSS()); //"00:11:01"

podemos hacer que esta función sea mucho más corta y nítida, pero eso disminuye la legibilidad, por lo que la escribiremos lo más simple posible y lo más estable posible.

o puedes verificar que funcione here :


function formatSeconds(seconds) { var date = new Date(1970,0,1); date.setSeconds(seconds); return date.toTimeString().replace(/.*(/d{2}:/d{2}:/d{2}).*/, "$1"); }


var time1 = date1.getTime(); var time2 = date2.getTime(); var totalMilisec = time2 - time1; alert(DateFormat(''hh:mm:ss'',new Date(totalMilisec))) /* ---------------------------------------------------------- * Field | Full Form | Short Form * -------------|--------------------|----------------------- * Year | yyyy (4 digits) | yy (2 digits) * Month | MMM (abbr.) | MM (2 digits) | NNN (name) | * Day of Month | dd (2 digits) | * Day of Week | EE (name) | E (abbr) * Hour (1-12) | hh (2 digits) | * Minute | mm (2 digits) | * Second | ss (2 digits) | * ---------------------------------------------------------- */ function DateFormat(formatString,date){ if (typeof date==''undefined''){ var DateToFormat=new Date(); } else{ var DateToFormat=date; } var DAY = DateToFormat.getDate(); var DAYidx = DateToFormat.getDay(); var MONTH = DateToFormat.getMonth()+1; var MONTHidx = DateToFormat.getMonth(); var YEAR = DateToFormat.getYear(); var FULL_YEAR = DateToFormat.getFullYear(); var HOUR = DateToFormat.getHours(); var MINUTES = DateToFormat.getMinutes(); var SECONDS = DateToFormat.getSeconds(); var arrMonths = new Array("January","February","March","April","May","June","July","August","September","October","November","December"); var arrDay=new Array(''Sunday'',''Monday'',''Tuesday'',''Wednesday'',''Thursday'',''Friday'',''Saturday''); var strMONTH; var strDAY; var strHOUR; var strMINUTES; var strSECONDS; var Separator; if(parseInt(MONTH)< 10 && MONTH.toString().length < 2) strMONTH = "0" + MONTH; else strMONTH=MONTH; if(parseInt(DAY)< 10 && DAY.toString().length < 2) strDAY = "0" + DAY; else strDAY=DAY; if(parseInt(HOUR)< 10 && HOUR.toString().length < 2) strHOUR = "0" + HOUR; else strHOUR=HOUR; if(parseInt(MINUTES)< 10 && MINUTES.toString().length < 2) strMINUTES = "0" + MINUTES; else strMINUTES=MINUTES; if(parseInt(SECONDS)< 10 && SECONDS.toString().length < 2) strSECONDS = "0" + SECONDS; else strSECONDS=SECONDS; switch (formatString){ case "hh:mm:ss": return strHOUR + '':'' + strMINUTES + '':'' + strSECONDS; break; //More cases to meet your requirements. } }