18

如何在java中将分钟转换为天小时和分钟(我们这里有一周,7天)

 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;
 }

我试过了,但它不起作用

谢谢

4

14 回答 14

40

更短的方式。(假设时间 >= 0)

 public String timeConvert(int time) { 
   return time/24/60 + ":" + time/60%24 + ':' + time%60;
 }
于 2010-05-03T08:49:42.593 回答
16

如果您想自己做这件事,请走另一条路。

  1. 将数字除以 60 * 24。(这将得到天数。)
  2. 将余数除以 60。(这将为您提供小时数。)
  3. #2 的余数是分钟数。
于 2010-05-01T18:45:07.363 回答
11

如果您使用 Java 6,TimeUnit 枚举会很有用。例如:

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

此静态调用将 10 天转换为小时单位,并返回 240。您可以使用从 NANOSECONDS 开始并以 DAYS 结束的时间单位。

实际上 TimeUnit 在 Java 5 中可用,但在版本 6 中添加了更多单元。

--EDIT-- 既然我更好地理解了您的问题,请使用除法和余数方法,就像在 Romain 的回答中一样。我的提示仅对转换为单个时间单位有用。

于 2010-05-01T18:35:15.860 回答
5

答案是:

 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;
 }

你觉得这段代码怎么样?

于 2010-05-01T20:25:39.883 回答
4

1)您的代码是重复的。在我看来,这是错误代码的标志。

2)除数不应该随着天数而变化,因为天数与一小时的分钟数关系不大。

除此之外,看看 Romain Hippeau 的方法,他告诉你怎么做。

于 2010-05-01T19:07:38.107 回答
4

Java-9java.time解决方案:

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);
    }
}

输出:

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

Java-8java.time解决方案:

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);
    }
}

输出:

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

从Trail: Date Time了解现代日期时间 API 。

于 2020-12-29T10:04:41.207 回答
3

1天2小时5分钟

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;
}
于 2018-04-22T17:21:53.543 回答
2

如果有人想使用 JavaScript 的公认答案,时间将以小数显示。为了删除这些小数,您可以使用以下代码:

function timeConvert(time)
{ 
   return parseInt(time/24/60) + " days," + parseInt(time/60%24) + ' hours,' + parseInt(time%60) + " minutes";
}
于 2021-06-27T10:34:22.557 回答
0

我正在使用此代码。它也可以提供帮助。

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";
        }
    }
}
于 2017-05-18T08:41:38.710 回答
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);
    }
}
于 2017-08-02T13:35:12.047 回答
0

(time / 24 / 60).toFixed(0) + ":" +(time / 60 % 24).toFixed(0) + ':' + (time % 60) 最好

于 2020-09-06T13:45:17.373 回答
0

为了获得最佳可读性,就像它不会打印 0 天或 0 小时或 0 分钟一样。例如-(如果分钟=1500,那么它只会打印 1 天 1 小时)

整数分钟=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);
于 2018-09-14T21:09:40.843 回答
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`
    }
}
于 2019-04-17T06:05:12.833 回答
-1

只需让方法返回字符串并获取(int minuts)String getTextOfTime(int minuts){返回结果

字符串 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;

}

于 2021-02-18T13:44:56.217 回答