首页 > Java > 如何在 Java 中将毫秒转换为“X 分钟,x 秒”?

如何在 Java 中将毫秒转换为“X 分钟,x 秒”?

上一篇 下一篇

我想记录用户在我的程序中开始某些事情时使用的时间。当他完成后,我会从变量中减去电流,我想使用人类可读的格式向他们展示经过的时间,例如“XX 小时,XX 分钟,XX 秒”甚至“XX 分钟,XX 秒”,因为它不太可能花费某人一个小时。System.currentTimeMillis()System.currentTimeMillis()start

最好的方法是什么?

分割线

网友回答:

使用该类:java.util.concurrent.TimeUnit

String.format("%d min, %d sec", 
    TimeUnit.MILLISECONDS.toMinutes(millis),
    TimeUnit.MILLISECONDS.toSeconds(millis) - 
    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))
);

注意:是 Java 1.5 规范的一部分,但在 Java 1.6 中加入。TimeUnittoMinutes

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

String.format("%02d min, %02d sec", 
    TimeUnit.MILLISECONDS.toMinutes(millis),
    TimeUnit.MILLISECONDS.toSeconds(millis) - 
    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))
);

如果 或 不受支持(例如在 API 版本 9 之前的 Android 上),请使用以下公式:TimeUnittoMinutes

int seconds = (int) (milliseconds / 1000) % 60 ;
int minutes = (int) ((milliseconds / (1000*60)) % 60);
int hours   = (int) ((milliseconds / (1000*60*60)) % 24);
//etc...

分割线

网友回答:

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

   /**
     * 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());
    }

分割线

网友回答:

long time = 1536259;

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

指纹:

25:36:259

模板简介:该模板名称为【如何在 Java 中将毫秒转换为“X 分钟,x 秒”?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Java】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 289次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 04-17
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信模板 单页式简历模板 响应式 微信素材 微信图片 html5 自适应 企业网站 微信公众平台 微信文章
您可能会喜欢的其他模板