how to convert minutes to days,hours,minutes
Asked Answered
M

15

20

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

Matusow answered 1/5, 2010 at 18:24 Comment(0)
J
41

A shorter way. (Assumes time >= 0)

 public String timeConvert(int time) { 
   return time/24/60 + ":" + time/60%24 + ':' + time%60;
 }
Jacobah answered 3/5, 2010 at 8:49 Comment(3)
Works great, Thanks. To prevent decimals, it should be Math.floor(time/24/60) + ":" + Math.floor(time/60%24) + ':' + Math.floor(time%60)Purpura
@Dr.DS Integer arithmetic doesn't produce decimals in Java. time/60 is always in int value. e.g. 1/60 == 0 in Java.Jacobah
Sorry.. I just noticed this answer has a tag of java. I found your answer while searching for something similar for javascript. So commented with an update keeping javascript in mind. Anyways... It helped me in right direction :-)Purpura
E
17

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.
Ermey answered 1/5, 2010 at 18:45 Comment(2)
but i have more then one day my minutes begin on 0 ends on 10080 i will have like 136:30 with this algorothmMatusow
Romain's method works just fine so long as you take both the quotient and remainder in each of the first two cases. If you have 1600 minutes and divide by (60 * 24), the quotient is 1 and the remainder is 160 which you then divide by 60. The quotient of that is 2 and the remainder is 40. Thus 1600 minutes equals 1 day, 2 hours, and 40 minutes.Gotcher
M
12

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.

Milkwort answered 1/5, 2010 at 18:35 Comment(2)
thanks, but i donno how to use this, there is no docs about itMatusow
@tuxou : there is the javadocHoloenzyme
M
7

Java-9 java.time Solution:

import java.time.Duration;

public class Main {
    public static void main(String[] args) {
        // Test
        System.out.println(minutesToDaysHoursMinutes(10080));
        System.out.println(minutesToDaysHoursMinutes(1600));
    }

    public static String minutesToDaysHoursMinutes(int time) {
        Duration d = Duration.ofMinutes(time);
        long days = d.toDaysPart();
        long hours = d.toHoursPart();
        long minutes = d.toMinutesPart();
        return String.format("%d Day(s) %d Hour(s) %d Minute(s)", days, hours, minutes);
    }
}

Output:

7 Day(s) 0 Hour(s) 0 Minute(s)
1 Day(s) 2 Hour(s) 40 Minute(s)

Java-8 java.time Solution:

import java.time.Duration;

public class Main {
    public static void main(String[] args) {
        // Test
        System.out.println(minutesToDaysHoursMinutes(10080));
        System.out.println(minutesToDaysHoursMinutes(1600));
    }

    public static String minutesToDaysHoursMinutes(int time) {
        Duration d = Duration.ofMinutes(time);
        long days = d.toDays();
        long hours = d.toHours() % 24;
        long minutes = d.toMinutes() % 60;
        return String.format("%d Day(s) %d Hour(s) %d Minute(s)", days, hours, minutes);
    }
}

Output:

7 Day(s) 0 Hour(s) 0 Minute(s)
1 Day(s) 2 Hour(s) 40 Minute(s)

Learn about the modern date-time API from Trail: Date Time.

Margherita answered 29/12, 2020 at 10:4 Comment(0)
M
5

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?

Matusow answered 1/5, 2010 at 20:25 Comment(2)
Nice approach overall , but my suggestions to improve style would be: a) Don't use single letter variable names b) Avoid pre-declaring variables with values that never get used, it's better to do e.g. "int hour = (time%(24*60)) / 60;"Regality
I disagree with point b, where Mikira recommended that you cram as much code into one line as possible. However, if you seperate the variables out into bite-size steps as Eddinho has done then it's easier for others to step through your code and see what's happening. As for point a) This is a good point. I would veer away from single letter variables too, unless they're temporary while I think up a suitable name. In these cases I'd make the descriptive to the type of the variable e.g. s for string, i for int, dt for DataTable etc. Great solution though, Eddinho. It works, and elegantly so!Promise
S
4

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.

Speaking answered 1/5, 2010 at 19:7 Comment(0)
D
4

In case someone wants to use the accepted answer for JavaScript, time will be shown with decimals. In order to remove those decimals, you can use this code:

function timeConvert(time)
{ 
   return parseInt(time/24/60) + " days," + parseInt(time/60%24) + ' hours,' + parseInt(time%60) + " minutes";
}
Deadwood answered 27/6, 2021 at 10:34 Comment(0)
A
3

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;
}
Abreaction answered 22/4, 2018 at 17:21 Comment(0)
R
0

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";
        }
    }
}
Revision answered 18/5, 2017 at 8:41 Comment(0)
E
0
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);
    }
}
Esquivel answered 2/8, 2017 at 13:35 Comment(0)
A
0

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);
Alenealenson answered 14/9, 2018 at 21:9 Comment(0)
P
0
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`
    }
}
Polyploid answered 17/4, 2019 at 6:5 Comment(0)
C
0

(time / 24 / 60).toFixed(0) + ":" +(time / 60 % 24).toFixed(0) + ':' + (time % 60) Does it best

Cummine answered 6/9, 2020 at 13:45 Comment(1)
It's not JavaScript; it's Java.Margherita
H
0

just make method return string and take( int minuts) String getTextOfTime(int minuts) {return result

String getTextOfTime(int minuts) {

int weeks = (-minuts / 10080).toInt();
int aboveWeeks = -minuts % 10080;
int days = (aboveWeeks / 1440).toInt();
int aboveDays = (aboveWeeks % 1440);
int hours = (aboveDays / 60).toInt();
int aboveHours = aboveDays % 60;
int minute = aboveHours;

String result = "";

if (weeks != 0) {
  result += weeks.toString();
  if (weeks == 1) {
    result += " week ";
  } else {
    result += " weeks ";
  }
}

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

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

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

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

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

}

Hodson answered 18/2, 2021 at 13:44 Comment(1)
I am sure from this methodHodson
R
0

For those looking for an SQL version of this logic:

where c.a_ARR is a Start Datetime, c.a_DEP is an End DateTime

       CASE WHEN DATEDIFF(minute, c.a_ARR, c.a_DEP)/60/24 = 0.0
            THEN ''
            ELSE FORMAT(DATEDIFF(minute, c.a_ARR, c.a_DEP)/60/24,'0') + 'd'
       END +
       CASE WHEN DATEDIFF(minute, c.a_ARR, c.a_DEP)/60%24 = 0.0 
            THEN ''
            ELSE FORMAT(DATEDIFF(minute, c.a_ARR, c.a_DEP)/60%24,'0') + 'h'
       END +
       CASE WHEN DATEDIFF(minute, c.a_ARR, c.a_DEP)%60 = 0.0
            THEN ''
            ELSE FORMAT(DATEDIFF(minute, c.a_ARR, c.a_DEP)%60,'0') + 'm'
       END AS [Duration]
Rajkot answered 4/8, 2023 at 1:49 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.