如何解决在 java 11 中将时间以分钟为单位转换为 HH:mm
我收到一个以分钟为单位的 json 负载,我需要将其转换为 HH:mm,甚至可能还需要设置时区,
我试过这个解决方案
SimpleDateFormat sdf = new SimpleDateFormat("mm");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
try {
Date dt = sdf.parse("90");
sdf = new SimpleDateFormat("HH:mm");
System.out.println(sdf.format(dt));
} catch (ParseException e) {
e.printstacktrace();
}
所以有任何简化的方法来做到这一点
解决方法
java.time
java.util
日期时间 API 及其格式化 API SimpleDateFormat
已过时且容易出错。建议完全停止使用它们并切换到 modern Date-Time API*。
使用 java.time
(现代日期时间 API)的解决方案:
您可以使用 java.time.Duration
,它以 ISO-8601 standards 为模型,并作为 JSR-310 implementation 的一部分与 Java-8 一起引入。 Java-9 引入了一些更方便的方法。
演示:
import java.time.Duration;
public class Main {
public static void main(String[] args) {
int minutes = 123;
Duration duration = Duration.ofMinutes(minutes);
// Default format
System.out.println(duration);
// Custom format
// ####################################Java-8####################################
String formattedDuration = String.format("%d:%02d",duration.toHours(),duration.toMinutes() % 60);
System.out.println(formattedDuration);
// ##############################################################################
// ####################################Java-9####################################
formattedDuration = String.format("%d:%02d",duration.toHoursPart(),duration.toMinutesPart(),duration.toSecondsPart());
System.out.println(formattedDuration);
// ##############################################################################
}
}
输出:
PT2H3M
2:03
2:03
从 Trail: Date Time 了解有关现代 Date-Time API 的更多信息。
当您说 123 分钟时,它与时区无关,即 123 分钟的持续时间在任何时区都具有相同的值。检查 Duration is not the same as Date-Time 以了解日期时间和持续时间之间的区别。通俗地说,Date-Time 就像一个向量,而 Duration 就像一个标量。
* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport,它将大部分 java.time 功能向后移植到 Java 6 & 7. 如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring 和 How to use ThreeTenABP in Android Project。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。