首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Java中将毫秒转换为"X mins,x秒“?

如何在Java中将毫秒转换为"X mins,x秒“?
EN

Stack Overflow用户
提问于 2009-03-09 08:41:06
回答 28查看 624.4K关注 0票数 613

我想使用System.currentTimeMillis()记录用户在我的程序中开始执行某些操作时的时间。当他完成时,我将从start变量中减去当前的System.currentTimeMillis(),我想用人类可读的格式显示所经过的时间,例如"XX小时,XX分钟,XX秒“,甚至"XX分钟,XX秒”,因为这不太可能花费某人一个小时。

做这件事最好的方法是什么?

EN

回答 28

Stack Overflow用户

回答已采纳

发布于 2009-03-09 10:01:19

使用java.util.concurrent.TimeUnit类:

代码语言:javascript
运行
复制
String.format("%d min, %d sec", 
    TimeUnit.MILLISECONDS.toMinutes(millis),
    TimeUnit.MILLISECONDS.toSeconds(millis) - 
    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))
);

注意:TimeUnit是Java1.5规范的一部分,但是toMinutes是从Java1.6开始添加的。

要为值0-9添加前导零,只需执行以下操作:

代码语言:javascript
运行
复制
String.format("%02d min, %02d sec", 
    TimeUnit.MILLISECONDS.toMinutes(millis),
    TimeUnit.MILLISECONDS.toSeconds(millis) - 
    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))
);

如果不支持TimeUnittoMinutes (例如9版之前的安卓),请使用以下公式:

代码语言:javascript
运行
复制
int seconds = (int) (milliseconds / 1000) % 60 ;
int minutes = (int) ((milliseconds / (1000*60)) % 60);
int hours   = (int) ((milliseconds / (1000*60*60)) % 24);
//etc...
票数 1.3K
EN

Stack Overflow用户

发布于 2011-10-05 23:41:28

根据@siddhadev的回答,我编写了一个将毫秒转换为格式化字符串的函数:

代码语言:javascript
运行
复制
   /**
     * Convert a millisecond duration to a string format
     * 
     * @param millis A duration to convert to a string form
     * @return A string of the form "X Days Y Hours Z Minutes A Seconds".
     */
    public static String getDurationBreakdown(long millis) {
        if(millis < 0) {
            throw new IllegalArgumentException("Duration must be greater than zero!");
        }

        long days = TimeUnit.MILLISECONDS.toDays(millis);
        millis -= TimeUnit.DAYS.toMillis(days);
        long hours = TimeUnit.MILLISECONDS.toHours(millis);
        millis -= TimeUnit.HOURS.toMillis(hours);
        long minutes = TimeUnit.MILLISECONDS.toMinutes(millis);
        millis -= TimeUnit.MINUTES.toMillis(minutes);
        long seconds = TimeUnit.MILLISECONDS.toSeconds(millis);

        StringBuilder sb = new StringBuilder(64);
        sb.append(days);
        sb.append(" Days ");
        sb.append(hours);
        sb.append(" Hours ");
        sb.append(minutes);
        sb.append(" Minutes ");
        sb.append(seconds);
        sb.append(" Seconds");

        return(sb.toString());
    }
票数 134
EN

Stack Overflow用户

发布于 2012-02-16 20:14:37

代码语言:javascript
运行
复制
long time = 1536259;

return (new SimpleDateFormat("mm:ss:SSS")).format(new Date(time));

打印:

25:36:259

票数 87
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/625433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档