当前位置:  开发笔记 > 编程语言 > 正文

如何将毫秒转换为人类可读的形式?

如何解决《如何将毫秒转换为人类可读的形式?》经验,为你挑选了5个好方法。

我需要将任意数量的毫秒转换为Days,Hours,Minutes Second.

例如:10天,5小时,13分钟,1秒.



1> Greg Hewgill..:

好吧,既然没有其他人加强,我会编写简单的代码来执行此操作:

x = ms / 1000
seconds = x % 60
x /= 60
minutes = x % 60
x /= 60
hours = x % 24
x /= 24
days = x

我很高兴你在几天停下来,并没有问几个月.:)

注意,在上文中,假设/表示截断整数除法.如果在/表示浮点除法的语言中使用此代码,则需要根据需要手动截断除法的结果.


@Greg Hewgill**我很高兴你在几天停了下来,并没有问几个月.:)**哈哈 :)
刚刚在flash功能中使用它.谢谢!(为简单起见)
它无法正常工作.在使用除数时应该使用parseInt,否则你会看到long float值.请参阅下面的答案以获得更全面的解决方案.

2> Gabriele D'A..:

设A为毫秒数.然后你有:

seconds=(A/1000)%60
minutes=(A/(1000*60))%60
hours=(A/(1000*60*60))%24

等等(%是模数运算符).

希望这可以帮助.



3> Nick Grealy..:

下面的两个解决方案都使用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"



4> David Dossot..:

Apache Commons Lang有一个DurationFormatUtils,它有非常有用的方法,比如formatDurationWords.



5> albertein..:

你应该使用你正在使用的任何语言的日期时间函数,但是,这里只是为了好玩的代码:

int milliseconds = someNumber;

int seconds = milliseconds / 1000;

int minutes = seconds / 60;

seconds %= 60;

int hours = minutes / 60;

minutes %= 60;

int days = hours / 24;

hours %= 24;

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有