You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 11中JSON载荷分钟数转HH:mm格式(含时区设置)的简化实现方法

你的方法其实绕了个大弯,而且用的SimpleDateFormat还是Java里已经过时的类——其实有好几种更简洁可靠的实现方式,尤其是用Java 8+引入的java.time时间API,既直观又避免了旧API的坑。

情况1:只是将总分钟数转为HH:mm格式的时长

如果你的需求只是把「总分钟数」转换成类似小时:分钟的时长表示(比如90分钟→01:30),完全不需要用日期解析那一套,直接计算小时和剩余分钟就行,代码超简洁:

int totalMinutes = 90;
int hours = totalMinutes / 60;
int minutes = totalMinutes % 60;
// 用String.format补零,保证输出两位数的小时/分钟
String result = String.format("%02d:%02d", hours, minutes);
System.out.println(result); // 输出 01:30

情况2:需要对应时区的具体时间点(比如从基准时间累加分钟)

如果你的场景是要把分钟数当作某个基准时间(比如UTC纪元时间)的偏移量,得到对应时区的时间并格式化,那推荐用java.time包的类,比旧的SimpleDateFormat更安全(线程安全)、逻辑更清晰:

int totalMinutes = 90;
// 从UTC纪元时间开始累加指定分钟数
Instant instant = Instant.EPOCH.plus(Duration.ofMinutes(totalMinutes));
// 指定目标时区(这里用UTC,你可以换成比如"Asia/Shanghai"这类时区ID)
ZonedDateTime zonedTime = instant.atZone(ZoneId.of("UTC"));
// 格式化输出HH:mm格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
String result = zonedTime.format(formatter);
System.out.println(result); // 输出 01:30

为什么不推荐原来的方法?

原来的代码用SimpleDateFormat解析分钟字符串再格式化,不仅绕路,而且SimpleDateFormat是线程不安全的,在Java 8之后已经被官方标记为过时,更推荐用java.time系列的API来替代。

内容的提问来源于stack exchange,提问作者Thejas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 22:07:45