【发布时间】:2015-11-15 02:49:49
【问题描述】:
我需要从 Java 中的时区 ID 获取以下格式的 GMT 时区值:GMT+05:30 或 MST-07:00。
区域 ID 示例:
String zoneId ="America/Phoenix" or "Asia/Calcutta"
【问题讨论】:
-
使用
TimeZone#getOffset(),然后将毫秒转换为小时来创建一个字符串。
我需要从 Java 中的时区 ID 获取以下格式的 GMT 时区值:GMT+05:30 或 MST-07:00。
区域 ID 示例:
String zoneId ="America/Phoenix" or "Asia/Calcutta"
【问题讨论】:
TimeZone#getOffset(),然后将毫秒转换为小时来创建一个字符串。
我想你指的是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));
}
【讨论】:
GMT%d:%02d 改成了 GMT%02d:%02d 还是不行?
这在 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
【讨论】: