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

Android设备如何获取GMT格式的时区名称?

实现方案

问题原因

你当前调用的无参TimeZone.getDisplayName()默认返回时区的本地化缩写(如PST、CST等),不支持直接输出GMT±hh:mm格式的偏移标识,需要自行计算偏移量或使用新版时间API实现。

方案1:兼容java.util.TimeZone(适配你当前的调用方式)

直接计算时区偏移量格式化输出即可,代码如下:

TimeZone defaultTz = TimeZone.getDefault();
// 获取当前时间的实际偏移(包含夏令时调整,不需要的话替换为getRawOffset())
int offsetMs = defaultTz.getOffset(System.currentTimeMillis());
int offsetHours = offsetMs / (1000 * 60 * 60);
int offsetMinutes = Math.abs((offsetMs / (1000 * 60)) % 60);
// 格式化输出GMT±hh:mm格式
String gmtTimezone = String.format("GMT%+03d:%02d", offsetHours, offsetMinutes);

输出示例:GMT-07:00、GMT+08:00,完全符合需求。

方案2:Java 8及以上推荐(使用java.time新时间API)

Java 8引入的java.time包提供了更简洁的实现,无需手动计算偏移:

ZoneOffset currentOffset = ZonedDateTime.now().getOffset();
String gmtTimezone = "GMT" + currentOffset.getId().replace("Z", "+00:00");

注意事项:

  • ZoneOffset.getId()返回的UTC零时区标识为Z,需要手动替换为+00:00以统一格式
  • 该方案自动适配夏令时调整,不需要额外处理偏移计算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:24:02