如何在java中将分钟转换为小时和分钟(hh:mm)

时间:2011-03-22 05:51:38

标签: java

我需要在java中将分钟转换为小时和分钟。例如260应该是4:20。任何人都可以帮助我如何转换它。

18 个答案:

答案 0 :(得分:159)

如果您的时间位于名为t

的变量中
int hours = t / 60; //since both are ints, you get an int
int minutes = t % 60;
System.out.printf("%d:%02d", hours, minutes);

它变得越来越容易

答案 1 :(得分:14)

TL;博士

Duration.ofMinutes( 260L )
        .toString()
  

PT4H20M

......或......

LocalTime.MIN.plus( 
    Duration.ofMinutes( 260L ) 
).toString()
  

04:20

Duration

java.time类包含一对表示时间跨度的类。 Duration课程为小时 - 分钟 - 秒,Period为几年 - 几个月 -

Duration d = Duration.ofMinutes( 260L );

ISO 8601

ISO 8601标准定义了日期时间值的文本格式。对于未附加到时间轴的时间跨度,standard formatPnYnMnDTnHnMnSP标记开头,T将年 - 月 - 日与小时 - 分 - 秒分开。所以一个半小时是PT1H30M

java.time类默认使用ISO 8601格式来解析和生成字符串。 DurationPeriod类使用此特定标准格式。所以只需致电toString

String output = d.toString(); 
  

PT4H20M

对于备用格式,使用Duration::to…Part方法在Java 9及更高版本(不是在Java 8中)中构建自己的String。或者请参阅this Answer以使用正则表达式来操作ISO 8601格式的字符串。

LocalTime

我强烈建议使用标准的ISO 8601格式,而不是04:20的极其模糊和混乱的时钟格式。但是如果你坚持,你可以通过攻击LocalTime类来获得这种效果。如果您的持续时间不超过24小时,则此方法有效。

LocalTime hackUseOfClockAsDuration = LocalTime.MIN.plus( d );
String output = hackUseOfClockAsDuration.toString();
  

04:20

关于java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

从哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore

答案 2 :(得分:11)

您也可以使用TimeUnit课程。你可以定义

private static final String FORMAT = "%02d:%02d:%02d";
可以有一个方法:

public static String parseTime(long milliseconds) {
      return String.format(FORMAT,
              TimeUnit.MILLISECONDS.toHours(milliseconds),
              TimeUnit.MILLISECONDS.toMinutes(milliseconds) - TimeUnit.HOURS.toMinutes(
              TimeUnit.MILLISECONDS.toHours(milliseconds)),
              TimeUnit.MILLISECONDS.toSeconds(milliseconds) - TimeUnit.MINUTES.toSeconds(
              TimeUnit.MILLISECONDS.toMinutes(milliseconds)));
   }

答案 3 :(得分:7)

使用java.text.SimpleDateFormat将分钟转换为小时和分钟

SimpleDateFormat sdf = new SimpleDateFormat("mm");

try {
    Date dt = sdf.parse("90");
    sdf = new SimpleDateFormat("HH:mm");
    System.out.println(sdf.format(dt));
} catch (ParseException e) {
    e.printStackTrace();
}

答案 4 :(得分:3)

可以这样做

        int totalMinutesInt = Integer.valueOf(totalMinutes.toString());

        int hours = totalMinutesInt / 60;
        int hoursToDisplay = hours;

        if (hours > 12) {
            hoursToDisplay = hoursToDisplay - 12;
        }

        int minutesToDisplay = totalMinutesInt - (hours * 60);

        String minToDisplay = null;
        if(minutesToDisplay == 0 ) minToDisplay = "00";     
        else if( minutesToDisplay < 10 ) minToDisplay = "0" + minutesToDisplay ;
        else minToDisplay = "" + minutesToDisplay ;

        String displayValue = hoursToDisplay + ":" + minToDisplay;

        if (hours < 12)
            displayValue = displayValue + " AM";
        else
            displayValue = displayValue + " PM";

        return displayValue;
    } catch (Exception e) {
        LOGGER.error("Error while converting currency.");
    }
    return totalMinutes.toString();

答案 5 :(得分:1)

我将这个功能用于我的项目:

 public static String minuteToTime(int minute) {
    int hour = minute / 60;
    minute %= 60;
    String p = "AM";
    if (hour >= 12) {
        hour %= 12;
        p = "PM";
    }
    if (hour == 0) {
        hour = 12;
    }
    return (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + " " + p;
}

答案 6 :(得分:1)

(在Kotlin中)如果您要将答案放入TextView或其他内容,您可以改为使用字符串资源:

<string name="time">%02d:%02d</string>

然后您可以使用此String资源,然后使用以下命令在运行时设置文本:

private fun setTime(time: Int) {
    val hour = time / 60
    val min = time % 60
    main_time.text = getString(R.string.time, hour, min)
}

答案 7 :(得分:1)

在Swift中

func timeStringFrom(minutes:Double) -> String {
    return "\(Int(minutes/60)):\(Int(minutes) % 60)"
}

答案 8 :(得分:1)

分钟模式60将给出剩余分钟的小时数。

http://www.cafeaulait.org/course/week2/15.html

答案 9 :(得分:1)

在几秒钟内给出输入,您可以转换为格式hh:mm:ss,如下所示:

int hours;
int minutes;
int seconds;
int formatHelper;

int input;


//formatHelper maximum value is 24 hours represented in seconds

formatHelper = input % (24*60*60);

//for example let's say format helper is 7500 seconds

hours = formatHelper/60*60;
minutes = formatHelper/60%60;
seconds = formatHelper%60;

//now operations above will give you result = 2hours : 5 minutes : 0 seconds;

我使用了formatHelper,因为输入可以超过86 400秒,即24小时。

如果您希望输入的总时间由hh:mm:ss表示,则可以避免使用formatHelper。

我希望它有所帮助。

答案 10 :(得分:1)

试试这段代码:

import java.util.Scanner;

public class BasicElement {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        int hours;
        System.out.print("Enter the hours to convert:");
        hours =input.nextInt();
        int d=hours/24;
        int m=hours%24;
        System.out.println(d+"days"+" "+m+"hours");     

    }
}

答案 11 :(得分:1)

long d1Ms=asa.getTime();   
long d2Ms=asa2.getTime();   
long minute = Math.abs((d1Ms-d2Ms)/60000);   
int Hours = (int)minute/60;     
int Minutes = (int)minute%60;     
stUr.setText(Hours+":"+Minutes); 

答案 12 :(得分:0)

使用此代码计算分钟数:

long difference = new Date().getTime() - user.getUpdatedDate().getTime(); 
        int minutes = (int) TimeUnit.MILLISECONDS.toMinutes(difference);

答案 13 :(得分:0)

你在回答中忘记了发言:

int hours = Math.floor(t / 60); 
int minutes = t % 60;

System.out.printf("%d:%02d", hours, minutes);

没有它,你的结果在某些情况下是错误的,例如:

t = 525
hours = 8.75 

所以没有Math.floor,我们得到这个结果:9h45而不是8h45。

答案 14 :(得分:0)

int mHours = t / 60; //since both are ints, you get an int
int mMinutes = t % 60;
System.out.printf("%d:%02d", "" +mHours, "" +mMinutes);

答案 15 :(得分:0)

import java.util.Scanner;
public class Time{
    public static void main(String[]args){
        int totMins=0;
        int hours=0;
        int mins=0;
    Scanner sc= new Scanner(System.in);
    System.out.println("Enter the time in mins: ");
        totMins= sc.nextInt();
        hours=(int)(totMins/60);
        mins =(int)(totMins%60);
        System.out.printf("%d:%d",hours,mins);
    }
}

答案 16 :(得分:0)

这是我的功能,用于将secondmillisecond转换为day,hour,minute,second

public static String millisecondToFullTime(long millisecond) {
    return timeUnitToFullTime(millisecond, TimeUnit.MILLISECONDS);
}

public static String secondToFullTime(long second) {
    return timeUnitToFullTime(second, TimeUnit.SECONDS);
}

public static String timeUnitToFullTime(long time, TimeUnit timeUnit) {
    long day = timeUnit.toDays(time);
    long hour = timeUnit.toHours(time) % 24;
    long minute = timeUnit.toMinutes(time) % 60;
    long second = timeUnit.toSeconds(time) % 60;
    if (day > 0) {
        return String.format("%dday %02d:%02d:%02d", day, hour, minute, second);
    } else if (hour > 0) {
        return String.format("%d:%02d:%02d", hour, minute, second);
    } else if (minute > 0) {
        return String.format("%d:%02d", minute, second);
    } else {
        return String.format("%02d", second);
    }
}

测试

public static void main(String[] args) {
    System.out.println("60 => " + secondToFullTime(60));
    System.out.println("101 => " + secondToFullTime(101));
    System.out.println("601 => " + secondToFullTime(601));
    System.out.println("7601 => " + secondToFullTime(7601));
    System.out.println("36001 => " + secondToFullTime(36001));
    System.out.println("86401 => " + secondToFullTime(86401));
}

输出

60 => 1:00
101 => 1:41
601 => 10:01
7601 => 2:06:41
36001 => 10:00:01
86401 => 1day 00:00:01

希望有帮助

答案 17 :(得分:0)

我们可以使用Duration,但它需要Android O或更高版本。

这是我的看法:

private fun translateMinsToString24hrsFormat(autoSettlementTimeInMins : Int): String {
    val hours = (autoSettlementTimeInMins / 60).toString()
    val minutes = (autoSettlementTimeInMins % 60).toString()
    return "$hours:$minutes"
}