如何使用Java将"GMT+09:30"解析为小时、分钟数值
Java解析GMT格式时区偏移字符串实现方案
实现思路
Java 8及以上版本优先使用内置的java.time包相关API完成解析,不需要自定义正则拆分字符串,避免格式适配错误;Java 8以下版本可以使用TimeZone类实现。
Java 8+ 实现代码
import java.time.ZoneId; import java.time.ZoneOffset; public class GmtOffsetParser { public static void main(String[] args) { // 测试输入 String gmtOffsetStr = "GMT+09:30"; // 解析GMT格式字符串获取偏移量 ZoneOffset offset = ZoneId.of(gmtOffsetStr).getRules().getOffset(java.time.Instant.now()); // 计算对应数值 int totalSeconds = offset.getTotalSeconds(); // 总分钟数 int totalMinutes = totalSeconds / 60; // 小时数(支持小数) double hours = totalMinutes / 60.0; // 输出结果:小时: 9.5,总分钟数: 570 System.out.println("小时: " + hours); System.out.println("总分钟数: " + totalMinutes); } }
注意:如果输入的时区字符串不符合GMT标准格式,API会抛出异常,业务使用时建议增加入参格式校验和异常捕获逻辑。
Java 8之前版本兼容实现
import java.util.TimeZone; public class LegacyGmtOffsetParser { public static void main(String[] args) { String gmtOffsetStr = "GMT+09:30"; TimeZone timeZone = TimeZone.getTimeZone(gmtOffsetStr); // 获取原始偏移毫秒数 int rawOffsetMs = timeZone.getRawOffset(); int totalMinutes = rawOffsetMs / (1000 * 60); double hours = totalMinutes / 60.0; System.out.println("小时: " + hours); System.out.println("总分钟数: " + totalMinutes); } }
支持的格式范围
- 标准GMT前缀格式均可适配:
GMT+8、GMT-04:30、GMT+12:15等 - 正负偏移都可以正确计算
内容的提问来源于stack exchange,提问作者Huy Phan
相关产品推荐
相关产品推荐

