如何在java中将分钟转换为小时和分钟(hh:mm)tl;博士Duration国际标准化组织 ISO 8601LocalTime关于 java.time

2022-08-31 11:54:39

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


答案 1

如果您的时间位于名为t

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

再简单不过了

2021年增编:

请注意,这个答案是关于这个问题的字面意思:如何将分钟量转换为小时+分钟。它与时间,时区,AM / PM无关...

如果你需要更好地控制这类事情,即你正在处理时刻,而不仅仅是几分钟和几小时,请参阅下面的Basil Bourque的答案


答案 2

tl;博士

Duration.ofMinutes( 260L )
        .toString()

PT4H20M

...或。。。

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

04:20

Duration

java.time 类包括一对用于表示时间跨度的类。持续时间类适用于小时-分钟-秒,期间为年-月-日。

Duration d = Duration.ofMinutes( 260L );

Duration部件

通过调用 来访问 的每个部分。这些方法是在 Java 9 及更高版本中添加的。Durationto…Part

long days = d.toDaysPart() ;
int hours = d.toHoursPart() ;
int minutes = d.toMinutesPart() ;
int seconds = d.toSecondsPart() ;
int nanos = d.toNanosPart() ;

然后,您可以从这些部件组装自己的字符串。

国际标准化组织 ISO 8601

ISO 8601 标准定义了日期时间值的文本格式。对于未附加到时间线的时间跨度,标准格式为 。标记开始,并将年-月-日与小时-分钟-秒分开。所以一个半小时是.PnYnMnDTnHnMnSPTPT1H30M

java.time 类默认使用 ISO 8601 格式来解析和生成字符串。“持续时间”“期间”类使用此特定的标准格式。所以只需调用.toString

String output = d.toString(); 

PT4H20M

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

LocalTime

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

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

04:20


关于 java.time

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

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

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

从哪里获取 java.time 类?

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


推荐