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

lak*_*hmi 57 java

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

Fed*_*oca 169

如果你的时间在一个名为的变量中 t

int hours = t / 60; //since both are ints, you get an int
int minutes = t % 60;
System.out.printf("%d:%02d", hours, minutes);
Run Code Online (Sandbox Code Playgroud)

它变得容易了

  • 它可以,最初的"""+"是多余的.;)你可能想使用printf来填补分钟数,以阻止你获得4:2的4小时2分钟.例如`System.out.printf("%d:%02d",小时,分钟)` (4认同)
  • 如果`t`可以是`<0`(负数),那么第二行应该是`int minutes = Math.abs(t) % 60;`。 (3认同)

Bas*_*que 16

TL;博士

Duration.ofMinutes( 260L )
        .toString()
Run Code Online (Sandbox Code Playgroud)

PT4H20M

… 要么 …

LocalTime.MIN.plus( 
    Duration.ofMinutes( 260L ) 
).toString()
Run Code Online (Sandbox Code Playgroud)

04:20

Duration

java.time类包含一对表示时间跨度的类.该Duration课程为数小时 - 分钟 - 秒,Period为数月 - 数天.

Duration d = Duration.ofMinutes( 260L );
Run Code Online (Sandbox Code Playgroud)

ISO 8601

ISO 8601标准定义了日期时间值的文本格式.对于未附加到时间线的时间跨度,标准格式PnYnMnDTnHnMnS.该P标记的开始,而T分离小时-分-秒年-月-日.所以一个半小时PT1H30M.

默认情况下,java.time类使用ISO 8601格式来解析和生成字符串.在DurationPeriod班用这种特殊的标准格式.所以干脆打电话toString.

String output = d.toString(); 
Run Code Online (Sandbox Code Playgroud)

PT4H20M

对于备用格式,请使用这些方法在Java 9及更高版本(而不是 Java 8)中构建自己的String Duration::to…Part.或者请参阅此答案,了解如何使用正则表达式来操作ISO 8601格式的字符串.

LocalTime

我强烈建议使用标准的ISO 8601格式,而不是极其模糊和令人困惑的时钟格式04:20.但如果你坚持,你可以通过黑客攻击这个LocalTime课程来达到这个效果.如果持续时间不超过24小时,则此方法有效.

LocalTime hackUseOfClockAsDuration = LocalTime.MIN.plus( d );
String output = hackUseOfClockAsDuration.toString();
Run Code Online (Sandbox Code Playgroud)

04:20


关于java.time

java.time框架是建立在Java 8和更高版本.这些类取代麻烦的老传统日期时间类,如java.util.Date,Calendar,和SimpleDateFormat.

现在处于维护模式Joda-Time项目建议迁移到java.time类.

要了解更多信息,请参阅Oracle教程.并搜索Stack Overflow以获取许多示例和解释.规范是JSR 310.

从哪里获取java.time类?

ThreeTen-额外项目与其他类扩展java.time.该项目是未来可能添加到java.time的试验场.您可以在此比如找到一些有用的类Interval,YearWeek,YearQuarter,和更多.


wal*_*ers 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)));
   }


小智 8

使用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();
}
Run Code Online (Sandbox Code Playgroud)