Оба решения ниже используют javascript (я понятия не имел, что решение не зависело от языка!). Оба решения необходимо будет расширить, если продолжительность захвата > 1 month
.
Решение 1. Используйте объект Date
var date = new Date(536643021);
var str = '';
str += date.getUTCDate()-1 + " days, ";
str += date.getUTCHours() + " hours, ";
str += date.getUTCMinutes() + " minutes, ";
str += date.getUTCSeconds() + " seconds, ";
str += date.getUTCMilliseconds() + " millis";
console.log(str);
Дает:
"6 days, 5 hours, 4 minutes, 3 seconds, 21 millis"
Библиотеки полезны, но зачем использовать библиотеку, если вы можете заново изобрести колесо! :)
Решение 2: написать свой собственный парсер
var getDuration = function(millis){
var dur = {};
var units = [
{label:"millis", mod:1000},
{label:"seconds", mod:60},
{label:"minutes", mod:60},
{label:"hours", mod:24},
{label:"days", mod:31}
];
// calculate the individual unit values...
units.forEach(function(u){
millis = (millis - (dur[u.label] = (millis % u.mod))) / u.mod;
});
// convert object to a string representation...
var nonZero = function(u){ return dur[u.label]; };
dur.toString = function(){
return units
.reverse()
.filter(nonZero)
.map(function(u){
return dur[u.label] + " " + (dur[u.label]==1?u.label.slice(0,-1):u.label);
})
.join(', ');
};
return dur;
};
Создает объект «длительность» с любыми необходимыми полями.
Форматирование отметки времени становится простым ...
console.log(getDuration(536643021).toString());
Дает:
"6 days, 5 hours, 4 minutes, 3 seconds, 21 millis"