Java:使用 TimeUnit 将秒转换为日、小时、分钟和秒 [英] Java: convert seconds into day, hour, minute and seconds using TimeUnit

查看:92
本文介绍了Java:使用 TimeUnit 将秒转换为日、小时、分钟和秒的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 TimeStamp 类将秒转换为天、小时、分钟、秒.我使用了以下代码

I am using TimeStamp class to convert seconds into Day,Hours,Minutes,Seconds. I used following code

public static void calculateTime(long seconds) {
        int day = (int)TimeUnit.SECONDS.toDays(seconds);        
        long hours = TimeUnit.SECONDS.toHours(seconds) - TimeUnit.SECONDS.toHours(TimeUnit.SECONDS.toDays(seconds));
        long minute = TimeUnit.SECONDS.toMinutes(seconds) - TimeUnit.SECONDS.toMinutes(TimeUnit.SECONDS.toHours(seconds));
        long second = TimeUnit.SECONDS.toSeconds(seconds) - TimeUnit.SECONDS.toSeconds(TimeUnit.SECONDS.toMinutes(seconds));

        System.out.println("Day " + day + " Hour " + hours + " Minute " + minute + " Seconds " + second);

    }

但我没有得到正确的结果.例如,当我将此方法称为 calculateTime(3600) 时,它给我的结果为 Day 0 Hour 1 Minute 60 Seconds 3540 而不是 Day 0 Hour 1 Minute0 秒 0.

But I am not getting right result. For example when I called this method as calculateTime(3600) it gives me the result as Day 0 Hour 1 Minute 60 Seconds 3540 instead of Day 0 Hour 1 Minute 0 Seconds 0.

我的逻辑有什么问题?请帮帮我.

推荐答案

应该是这样的

 int day = (int)TimeUnit.SECONDS.toDays(seconds);        
 long hours = TimeUnit.SECONDS.toHours(seconds) - (day *24);
 long minute = TimeUnit.SECONDS.toMinutes(seconds) - (TimeUnit.SECONDS.toHours(seconds)* 60);
 long second = TimeUnit.SECONDS.toSeconds(seconds) - (TimeUnit.SECONDS.toMinutes(seconds) *60);

编辑解释:

  1. 日计算是正确的,不需要解释.
  2. TimeUnit.SECONDS.toHours(second) 将让您直接从秒转换为小时,而不考虑您已经计算的天数.减去您已经获得的天数,即天 * 24.您现在还有剩余时间.
  3. 分秒相同.您需要分别减去已经得到的小时和分钟.

这篇关于Java:使用 TimeUnit 将秒转换为日、小时、分钟和秒的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆