来自区域 ID 的 GMT 时区

GMT Timezone from Zone Id

我需要按以下格式获取 GMT 时区值:GMT+05:30MST-07:00 来自 Java 中的时区 ID。

区域 ID 示例:

String zoneId ="America/Phoenix" or "Asia/Calcutta"

我想你指的是 java.util.TimeZone

这是一个 Java 7 的例子:

public static void main(String[] args) {
    final String id = "America/Phoenix";
    TimeZone timeZone = TimeZone.getTimeZone(id);
    long hours = TimeUnit.MILLISECONDS.toHours(timeZone.getRawOffset());
    long minutes = TimeUnit.MILLISECONDS.toMinutes(timeZone.getRawOffset())
            - TimeUnit.HOURS.toMinutes(hours);
    System.out.println("timeZone(" + id + ") = " + String.format("GMT%02d:%02d", hours, minutes));
}

这对我有用 Java 8:

LocalDateTime curTime = LocalDateTime.now();

String zoneId ="America/Phoenix";
String gmtZoneId = "GMT" + ZoneId.of(zoneId).getRules().getOffset(curTime);
System.out.println(gmtZoneId); // GMT-07:00 will be printed