有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

datetime Java:使用时间单位将秒转换为天、小时、分钟和秒

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

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 Minute 0 Seconds 0

我的逻辑怎么了?请帮帮我


共 (6) 个答案

  1. # 1 楼答案

    下面是我创建的代码:(3600秒显示“天:0小时:1分钟:0秒:0”)

    public class TimeConvert 
    {
        public static void main(String[] args) 
        {
            int fsec,d,h,m,s,temp=0,i;
            fsec=3600;
            //For Days
            if(fsec>=86400)
            {
                temp=fsec/86400;
                d=temp;
                for(i=1;i<=temp;i++)
                {
                    fsec-=86400;
                }
            }
            else
            {
                d=0;
            }
            //For Hours
            if(fsec>=3600)
            {
                temp=fsec/3600;
                h=temp;
                for(i=1;i<=temp;i++)
                {
                    fsec-=3600;
                }            
            }
            else
            {
                h=0;
            }
            //For Minutes
            if(fsec>=60)
            {
                temp=fsec/60;
                m=temp;
                for(i=1;i<=temp;i++)
                {
                    fsec-=60;
                }            
            }
            else
            {
                m=0;
            }
            //For Seconds
            if(fsec>=1)
            {
                s=fsec;            
            }
            else
            {
                s=0;
            }
            System.out.println("Days:"+d+" Hours:"+h+" Minutes:"+m+" Seconds:"+s);
        }
    }
    

    希望它能回答你的问题

  2. # 2 楼答案

    试试这个

    public static void calculateTime(long seconds) {
    
    int day = (int)TimeUnit.SECONDS.toDays(seconds);        
    long hours = TimeUnit.SECONDS.toHours(seconds) ;
    
    long tempSec = seconds - (TimeUnit.HOURS.toSeconds(hours) );
    System.out.println("after hours calculation "+ tempSec);
    
    long minute = TimeUnit.SECONDS.toMinutes(tempSec); 
    
    if(tempSec > TimeUnit.MINUTES.toSeconds(minute)){
        tempSec = tempSec - (TimeUnit.MINUTES.toSeconds(minute) );          
    }else{
        tempSec = TimeUnit.MINUTES.toSeconds(minute) - tempSec;
    }
    System.out.println("after min calculation "+ tempSec);
    
    
    long second = TimeUnit.SECONDS.toSeconds(tempSec) ;
    
    System.out.println("Day " + day + " Hour " + hours + " Minute " + minute + " Seconds " + second);
    }
    
  3. # 3 楼答案

    您可以这样做,只使用TimeUnit

    public static void calculateTime(long seconds) {
        int day = (int) TimeUnit.SECONDS.toDays(seconds);
        long hours = TimeUnit.SECONDS.toHours(seconds) -
                     TimeUnit.DAYS.toHours(day);
        long minute = TimeUnit.SECONDS.toMinutes(seconds) - 
                      TimeUnit.DAYS.toMinutes(day) -
                      TimeUnit.HOURS.toMinutes(hours);
        long second = TimeUnit.SECONDS.toSeconds(seconds) -
                      TimeUnit.DAYS.toSeconds(day) -
                      TimeUnit.HOURS.toSeconds(hours) - 
                      TimeUnit.MINUTES.toSeconds(minute);
        System.out.println("Day " + day + " Hour " + hours + " Minute " + minute + " Seconds " + second);
    }
    

    或者稍微短一点,但可能不那么直观

    public static void calculateTime(long seconds) {
        int day = (int) TimeUnit.SECONDS.toDays(seconds);
        long hours = TimeUnit.SECONDS.toHours(seconds) -
                     TimeUnit.DAYS.toHours(day);
        long minute = TimeUnit.SECONDS.toMinutes(seconds) -
                      TimeUnit.HOURS.toMinutes(TimeUnit.SECONDS.toHours(seconds));
        long second = TimeUnit.SECONDS.toSeconds(seconds) -
                      TimeUnit.MINUTES.toSeconds(TimeUnit.SECONDS.toMinutes(seconds));
        System.out.println("Day " + day + " Hour " + hours + " Minute " + minute + " Seconds " + second);
    }
    
  4. # 4 楼答案

    晚了,但很有帮助

    get time in the format 00:00:00

    /**
         * The time in format.
         *
         * in The Format of 00:00:00
         */
    
    public String getTimeInFormat(long _SECONDS)
    {
        if(TimeUnit.SECONDS.toHours(_SECONDS)>0)
        {
            return  String.format("%02d:%02d:%02d",
                    TimeUnit.SECONDS.toHours(_SECONDS),
                    TimeUnit.SECONDS.toMinutes(_SECONDS) -
                            TimeUnit.HOURS.toMinutes(TimeUnit.SECONDS.toHours(_SECONDS)),
                    TimeUnit.SECONDS.toSeconds(_SECONDS) -
                            TimeUnit.MINUTES.toSeconds(TimeUnit.SECONDS.toMinutes(_SECONDS)));
        }
        else {
            return  String.format("%02d:%02d",
                    TimeUnit.SECONDS.toMinutes(_SECONDS) -
                            TimeUnit.HOURS.toMinutes(TimeUnit.SECONDS.toHours(_SECONDS)),
                    TimeUnit.SECONDS.toSeconds(_SECONDS) -
                            TimeUnit.MINUTES.toSeconds(TimeUnit.SECONDS.toMinutes(_SECONDS)));
        }
    
    }
    
  5. # 5 楼答案

    应该是

     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. 时间单位。秒。toHours(秒)将为您提供从秒到小时的直接转换,而不考虑您已经计算的天数。减去你已经拥有的天数的小时数,即第24天。你现在还有剩余的时间
    3. 分钟和秒都一样。你需要分别减去已经得到的小时和分钟
  6. # 6 楼答案

    简单方法:

    public static void calculateTime(long seconds) {
        long sec = seconds % 60;
        long minutes = seconds % 3600 / 60;
        long hours = seconds % 86400 / 3600;
        long days = seconds / 86400;
    
        System.out.println("Day " + days + " Hour " + hours + " Minute " + minutes + " Seconds " + sec);
    }