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

如何使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:06:07