以下两种解决方案都使用 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"