문제

how to convert minutes into days hours and minutes in java ( we have a week here , 7 days )

 public String timeConvert(int time){
   String t = "";

   int h = 00;
   int m = 00;

  // h= (int) (time / 60);
  // m = (int) (time % 60);

  // if(h>=24) h=00;

   if((time>=0) && (time<=24*60)){
      h= (int) (time / 60);
      m = (int) (time % 60);
   }else if((time>24*60) && (time<=24*60*2)){
       h= (int) (time / (1440));
      m = (int) (time % (1440));
   }else if((time>24*60*2) && (time<=24*60*3)){
       h= (int) (time / (2880));
      m = (int) (time % (2880));
   }else if((time>24*60*3) && (time<=24*60*4)){
       h= (int) (time / (2880*2));
      m = (int) (time % (2880*2));
   }else if((time>24*60*4) && (time<=24*60*5)){
       h= (int) (time / (2880*3));
      m = (int) (time % (2880*3));
   }else if((time>24*60*5) && (time<=24*60*6)){
       h= (int) (time / (2880*4));
      m = (int) (time % (2880*4));
   }else if((time>24*60*6) && (time<=24*60*7)){
       h= (int) (time / (2880*5));
      m = (int) (time % (2880*5));
   }

   t =h+":"+m ;
   return t;
 }

I tried this but it dont work

thanks

도움이 되었습니까?

해결책

A shorter way. (Assumes time >= 0)

 public String timeConvert(int time) { 
   return time/24/60 + ":" + time/60%24 + ':' + time%60;
 }

다른 팁

If you want to do this yourself, go the other way.

  1. Divide the number by 60 * 24. (That will get the number of days.)
  2. Divide the remainder by 60. (That will give you number of hours.)
  3. The remainder of #2 is the number of minutes.

If you use Java 6, TimeUnit enum can be useful. For example:

TimeUnit.HOURS.convert(10, TimeUnit.DAYS)

This static call converts 10 days into hour units, and returns 240. You can play with time units starting from NANOSECONDS and ending with DAYS.

Actually TimeUnit is available from Java 5, but in version 6 more units were added.

--EDIT-- Now that I understand better your question, use the division and remainder approach as in the response of Romain. My tip is useful only for conversion to a single time unit.

and the answer is :

 public String timeConvert(int time){
   String t = "";

  int j = time/(24*60);
  int h= (time%(24*60)) / 60;
  int m = (time%(24*60)) % 60;



   t =j + ":" + h + ":" + m;
   return t;
 }

what do you think about this code?

1) Your code is repetitive. This is a sign of bad code in my opinion.

2) The divisor shouldn't be changing with the number of days, because the number of days has little to do with the number of minutes in an hour.

Beyond that, look at Romain Hippeau's approach, he told you how to do it.

1 day 2 hrs 5 mins

public static String convertToDaysHoursMinutes(long minutes) {

    int day = (int)TimeUnit.MINUTES.toDays(minutes);
    long hours = TimeUnit.MINUTES.toHours(minutes) - (day *24);
    long minute = TimeUnit.MINUTES.toMinutes(minutes) - (TimeUnit.MINUTES.toHours(minutes)* 60);

    String result = "";

    if (day != 0){
        result += day;
        if (day == 1){
            result += " day ";
        }
        else{
            result += " days ";
        }
    }

    if (hours != 0){
        result += hours;

        if (hours == 1){
            result += " hr ";
        }
        else{
            result += " hrs ";
        }
    }

    if (minute != 0){
        result += minute;

        if (minute == 1){
            result += " min";
        }
        else{
            result += " mins";
        }
    }

    return result;
}

i am using this code. it can also help.

private String getText(int minutes){

    int weeks = minutes / 10080;
    int aboveWeeks = minutes % 10080;
    int days = aboveWeeks / 1440;
    int aboveDays = aboveWeeks % 1440;
    int hours = aboveDays / 60;
    int aboveHours = aboveDays % 60;
    int minute = aboveHours / 60;

    if(weeks > 0 && days > 0) {
        if(weeks > 1 && days > 1){
            return weeks + " weeks " + days + " days before";
        } else {
            return weeks + " weeks " + days + " day before";
        }
    } else if (weeks > 0){
        if (weeks > 1){
            return weeks + " weeks before";
        } else {
            return weeks + " week before";
        }
    } else if(days > 0 && hours > 0){
        if(days > 1 && hours > 1){
            return days + " days " + hours + " hours before";
        } else {
            return days + " days " + hours + " hour before";
        }
    } else if(days > 0){
        if (days > 1){
            return days + " days before";
        } else {
            return days + " day before";
        }
    } else if(hours > 0 && minute > 0){
        if(hours > 1 && minute > 1){
            return hours + " hours " + minute + " minutes before";
        } else {
            return hours + " hours " + minute + " minute before";
        }
    } else if(hours > 0){
        if (hours > 1){
            return hours + " hours before";
        } else {
            return hours + " hour before";
        }
    } else {
        if (minutes > 1){
            return minutes + " minutes before";
        } else {
            return minutes + " minute before";
        }
    }
}
class time{
    public static void main (String args[]){
        System.out.println("Hello");
        int duration=1500;
         String testDuration = "";

        if(duration < 60){
            testDuration = duration + " minutes";
        }
        else{

            if((duration / 60)<24)
            {
                if((duration%60)==0){
                    testDuration = (duration / 60) + " hours";
                }
                else{
            testDuration = (duration / 60) + " hours," + (duration%60) + " minutes";
                }
            }
            else{

                if((duration%60)==0){
                    if(((duration/60)%24)==0){
                        testDuration = ((duration / 24)/60) + " days,";

                    }
                    else{
                    testDuration = ((duration / 24)/60) + " days," + (duration/60)%24 +"hours";
                    }
                }
                    else{
                testDuration = ((duration / 24)/60) + " days," + (duration/60)%24 +"hours"+ (duration%60) + " minutes";
                    }
            }
        }

        System.out.println(testDuration);
    }
}

for best readability ,like it won't print 0 day or 0 hour or 0 minute. e.g- (if minute=1500,then it will print only 1 day 1 hour)

int minute=150;

    StringBuilder sb=new StringBuilder();

    int day=minute/1440;
    int rem=minute%1440;
    int hour=rem/60;
    int Minute=rem%60;

if(day>0)
        sb.append(day+" day ");

if(hour>0)
        sb.append(hour+" hour ");

if(Minute>0)
        sb.append(Minute+" minute");

    System.out.println(sb);
const convertMinutesToDays = (minutes) => {
    let hours
    let days 
    let restMinutes
    const onedayMinutes = 1440 //24*60

    if(minutes < 60){
        return `${minutes} Minutes` 
    }else if(minutes > 60 && minutes < onedayMinutes){
        hours = Math.floor(minutes/60)
        restMinutes = minutes%60
        return `${hours} Hours ${restMinutes} Minutes`
    }else{
        days = Math.floor((minutes/60)/24)
        restMinutes = minutes % onedayMinutes
        hours = Math.floor(restMinutes/60) 
        restMinutes = restMinutes % 60
        return `${days} Days ${hours} Hours ${restMinutes} Minutes`
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top