Как преобразовать секунды в строку HH-MM-SS
с помощью JavaScript?Преобразование секунд в HH-MM-SS с JavaScript?
ответ
Знаете ли вы, что datejs? это должно быть известно.
Использование datejs, просто написать что-то вроде:
(new Date).clearTime()
.addSeconds(15457)
.toString('H:mm:ss');
--update
В настоящее время date.js устарела и не поддерживается, так что используйте "Moment.js", что гораздо лучше, как указывает TJ Crowder.
@Yassir и Клейтон: FWIW, DateJS не поддерживается в течение многих лет и имеет пару выдающихся ошибок (хотя, насколько мне известно, они в основном относятся к разбору и полуночи). [momentjs] (http://momentjs.com/) кажется довольно хорошим и в настоящее время поддерживается. –
@ J.J. Кроудер, ты прав. Но этот ответ был дан в 2009 году, тогда это была хорошая идеация. Я обновил свой ответ. – Cleiton
@Cleiton, ваш обновленный ответ не заполнен. Я попробовал это как есть и получил: 'TypeError: Object [object Date] не имеет метода clearTime. –
Я не думаю, что какая-либо встроенная функция стандартного объекта Date сделает это для вас таким образом, который удобнее, чем просто выполнять математику самостоятельно.
hours = Math.floor(totalSeconds/3600);
totalSeconds %= 3600;
minutes = Math.floor(totalSeconds/60);
seconds = totalSeconds % 60;
да, но вы можете получить это 1: 4: 43 вместо 01:04:43 !! –
Может ли недавний downvoter делиться тем, почему вы считаете, что это «не полезно»? –
Есть некоторые проблемы с этим, я думаю? Когда я попробовал это, я возвращал десятичные знаки, так что 180 секунд вернут '0.05' в переменной' hours'. Я положил его в 'parseInt', который исправил его для моего дела, но я не думаю, что это было бы точно для всего. Тем не менее, это помогло мне, поэтому спасибо! – BT643
Я использовал этот код перед тем, чтобы создать простой объект TimeSpan:
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);
Это делает трюк:
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;
}
(считанного из here)
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.
}
}
Вы также можете использовать Sugar.
Date.create().reset().set({seconds: 180}).format('{mm}:{ss}');
В этом примере возвращается '03: 00 '.
Звучит неплохо! После проверки он не возвращает 03 : 00, но для любого введенного значения, всего 00:00. – Ben
Возможно, они изменили свой API. Я обновил код (это уже 2 года, и вы, вероятно, переехали, но я думал, что другие могут найти его полезным). –
Вы также можете использовать ниже код:
int ss = nDur%60;
nDur = nDur/60;
int mm = nDur%60;
int hh = nDur/60;
function formatSeconds(seconds)
{
var date = new Date(1970,0,1);
date.setSeconds(seconds);
return date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");
}
formatSeconds (3919); // Возврат 01:05:19 Отличная функция .. Нравится –
Не работает, если вы выходите выше 24h –
new Date().toString().split(" ")[4];
результате 15:08:03
Как Клейтон отметил в his answer, moment.js могут быть использованы для этого:
moment().startOf('day')
.seconds(15457)
.format('H:mm:ss');
Что произойдет, если количество секунд превышает день? –
@ GiladPeleg, если количество секунд превышает день, количество дней вычисляется внутри, и оно возвращает только оставшиеся часы, минуты и секунды. Если вы хотите также подсчитать количество дней, вы можете попробовать 'moment(). StartOf ('year'). Seconds (30000000) .format ('DDD HH: mm: ss')'. – artificis
Что произойдет, если количество секунд превышает год? – OrangePot
var timeInSec = "661"; //even it can be string
String.prototype.toHHMMSS = function() {
/* extend the String by using prototypical inheritance,
so that you can use it to any string directly across all your app. */
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());
console.log(timeInSec.toHHMMSS());
или вы можете проверить это работает здесь: http://fiddle.jshell.net/sahilosheal/N2B5J/
кроме того ... если вы хотите сделать все время времени вещь легко .. использование momentJS – sheelpriy
Вы пробовали добавлять секунды к объекту Date?
var dt = new Date();
dt.addSeconds(1234);
Образец: http://fiddle.jshell.net/YvE7x/2/
Вы можете управлять, чтобы сделать это без каких-либо внешних библиотек JavaScript с помощью метода JavaScript Date, как следующее:
var date = new Date(null);
date.setSeconds(SECONDS); // specify value for SECONDS here
var result = date.toISOString().substr(11, 8);
I не знаю, почему каждый добавляет дополнительные библиотеки или делает математику вручную, когда это работает отлично. Благодаря! – jminardi
Это может быть даже сокращено до одной строки: 'новая дата (SECONDS * 1000) .toISOString(). Substr (11, 8);' – Frank
Brilliant. Без какой-либо сторонней библиотеки. Лучше – Riz
Для тех, кто с помощью AngularJS, простым решением является фильтрация значения с помощью date API, который преобразует миллисекунды в строку на основе запрошенного формата.Пример:
<div>Offer ends in {{ timeRemaining | date: 'HH:mm:ss' }}</div>
Обратите внимание, что это ожидает миллисекунд, так что вы можете умножить timeRemaining на 1000, если вы хотите конвертировать секунд (как исходный вопрос был сформулирован).
Вот функция для преобразования секунд в формат чч-мм-сс на основе ответа powtac в here
/**
* 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;
}
Пример использование
var seconds = SecondsTohhmmss(70);
console.log(seconds);
// logs 00-01-10
Легко следовать версиям для нубов :
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);
Попробуйте это:
function toTimeString(seconds) {
return (new Date(seconds * 1000)).toUTCString().match(/(\d\d:\d\d:\d\d)/)[0];
}
Вот расширение класса Number. toHHMMSS() преобразует секунды в строку 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>
После просмотра всех ответов и не быть счастливым с большинством из них, это то, что я придумал. Я знаю, что я очень опаздываю на разговор, но здесь все равно.
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;
}
создать новый объект Date, изменить время моих параметров преобразования объекта Date в строку времени, и удалить дополнительный материал, разбивая строку и возвращает только ту часть, которая нужна.
Я думал, что поделюсь этим подходом, поскольку он устраняет необходимость в регулярном выражении, логике и математике, чтобы получить результаты в формате «HH: mm: ss», и вместо этого он опирается на встроенные методы.
Вы можете взглянуть на документацию здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
Я знаю, что это своего рода старый, но ...
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(":")
}
Он будет:
toHHMMSS(13545) // 03:45:45
toHHMMSS(180) // 03:00
toHHMMSS(18) // 00:18
Как насчет долей секунды? 03: 45: 45.xxx? –
using momentjs for singleled calculatio п
var number = 10000(milliseconds);
var momentObject = moment.duration(number);
var output = momentObject.hours()+"HH"+momentObject.minutes()+"MM"+minuteObject.seconds()+"S"
Я просто хотел, чтобы дать небольшое пояснение к славному ответу выше:
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);
На второй линии, так как 3600 секунд в 1 час, мы разделим общее количество секунд на 3600, чтобы получить общее количество часов. Мы используем parseInt для удаления любого десятичного знака. Если totalSec составлял 12600 (3 с половиной часа), то parseInt (totalSec/3600) вернется 3, так как у нас будет 3 полных часа. Зачем нам нужен% 24 в этом случае? Если мы превысим 24 часа, допустим, у нас есть 25 часов (90000 секунд), тогда по модулю мы снова вернем нас к 1, а не возвратим 25.Это ограничивает результат в течение 24-часового ограничения, так как 24 часа в сутки.
Когда вы видите что-то вроде этого:
25 % 24
Думайте об этом так:
25 mod 24 or what is the remainder when we divide 25 by 24
Эта функция должна сделать это:
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 : ':');
}
без прохождения сепаратора, он использует :
в качестве разделителя (по умолчанию):
time = convertTime(13551.9941351); // --> OUTPUT = 03:45:51
Если вы хотите использовать -
в качестве разделителя, просто передать его в качестве второго параметра:
time = convertTime(1126.5135155, '-'); // --> OUTPUT = 00-18-46
Смотрите также this Fiddle.
Взаимодействие с этой старой нитью - ОП заявлено HH: MM: SS, и многие из решений работают, пока вы не осознаете, что вам нужно больше 24 часов. И, может быть, вам не нужно больше одной строки кода. Здесь вы найдете:
d=(s)=>{f=Math.floor;g=(n)=>('00'+n).slice(-2);return f(s/3600)+':'+g(f(s/60)%60)+':'+g(s%60)}
Он возвращает H +: MM: SS. Чтобы использовать его, просто используйте:
d(91260); // returns "25:21:00"
d(960); // returns "0:16:00"
... Я пытался заставить его использовать наименьшее количество кода можно, хороший один-лайнер подход.
Можете ли вы предоставить расширенную/читающую версию вашего кода, чтобы мы могли более легко увидеть, что происходит? Благодарю. – Kimball
ниже приведенный код, который будет преобразовывать секунды в формат чч-мм-сс:
var measuredTime = new Date(null);
measuredTime.setSeconds(4995); // specify value of SECONDS
var MHSTime = measuredTime.toISOString().substr(11, 8);
Получить альтернативный метод из Convert seconds to HH-MM-SS format in JavaScript
Есть много вариантов решения этой проблемы, и очевидно, есть являются хорошим вариант предложил об этом, но я хочу добавить еще один оптимизированный код здесь
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(":");
}
, если не хочет, отформатированные с нуля менее 10 номер, вы можете использовать
function formatSeconds(sec) {
return parseInt(sec/3600) + ':' + parseInt((sec % 3600)/60) + ':' + parseInt((sec % 3600) % 60);
}
Пример кода http://fiddly.org/1c476/1
- 1. Преобразование секунд в HH-MM с JavaScript?
- 2. Преобразование hhmmss во времени в Excel
- 3. Как преобразовать миллисекунды в формат «hhmmss» с помощью javascript?
- 4. Преобразование hhmmss во время использования python pandas
- 5. Преобразование секунд в ожидаемое
- 6. Преобразование секунд в PHP
- 7. Преобразование строки datetime в единицу времени (например, секунд) в Javascript
- 8. Преобразование секунд в несколько дней, часов, минут и секунд
- 9. Преобразование секунд до даты
- 10. Преобразование секунд в T1H15M5S (ISO_8601)
- 11. Преобразование секунд в формат времени
- 12. SSRS Общее время в HHMMSS
- 13. Формат времени в SAS HHMMSS
- 14. TimeSpan.Parse формат времени hhmmss
- 15. Синтаксический DateTime HHMMSS
- 16. Преобразование секунд с NSDateFormatter Возвращает Null
- 17. Преобразование даты в милли секунд в ИОС
- 18. Преобразование с JavaScript в
- 19. Преобразование секунд в миллисекунды/микросекунды в Python
- 20. Преобразование секунд в h.m в double
- 21. Преобразование от нескольких секунд до определенного формата минут - Javascript
- 22. Удаление 5 секунд с переменной в javascript
- 23. Преобразование секунд в часы, минуты и секунды
- 24. R - преобразование поля даты и времени в POSIXct с форматом HHMMSS
- 25. Преобразование секунд в год Час Минуты Секунды
- 26. Преобразование секунд в часы, минуты и секунды
- 27. Преобразование секунд в минуты, часы и дни
- 28. Javascript секунд до минут и секунд
- 29. Преобразование секунд в hhh: mm: ss в диаграмме
- 30. Преобразование секунд в считываемую строку времени
Смотрите мой ответ на http://stackoverflow.com/a/6313008/22470 – powtac