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

查看:726
本文介绍了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)时,将其结果作为第0天小时1分钟60秒3540 而不是第0天小时1分0秒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.

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

What is the wrong with my logic? Please help me.

推荐答案

应该像

 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(秒)将直接从秒数转换到几个小时,不考虑你已经计算的几天。减少你已经得到的几天的时间,即* 24天。你现在剩下几个小时了。

  3. 分钟和秒钟相同。你需要分别减去已经得到的小时和分钟。

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

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