我将检索-12到+12&范围内的值。我需要将其转换为特定的时区格式字符串。
e.g。
-3 becomes -03:00
0 becomes Z
4 becomes +04:00
我是否忽略了在JDK6中做同样事情的现成实用工具?
答案 0 :(得分:1)
JDK内置的任何内容都不会为您提供完全您指定的格式(没有一些操作)。 SimpleDateFormat("Z")已关闭,但会为您提供timezone in RFC 822 format,这并不是您所要求的。
你也可以简单地做到这一点:
public static String formatTimeZone(int offset) {
if (offset > 12 || offset < -12) {
throw new IllegalArgumentException("Invalid timezone offset " + offset);
}
if (offset >= 10) {
return "+" + offset + ":00";
} else if (offset > 0) {
return "+0" + offset + ":00";
} else if (offset == 0) {
return "Z";
} else if (offset > -10) {
return "-0" + (-offset) + ":00";
} else {
return offset + ":00";
}
}
答案 1 :(得分:0)
查看TimeZone
将输入转换为:
int offset = -3;
String cv = TimeZone.getTimeZone("GMT"+String.valueOf(offset)).getID();
... string cv将包含值“GMT-03:00”,您可以根据需要对其进行子串。
......作为一个具体的例子;
public String getTZfromInt(int offset) {
if (int == 0) return "Z";
if (offset < 0) return TimeZone.getTimeZone("GMT"+String.valueOf(offset)).getID().substr(3);
else return TimeZone.getTimeZone("GMT+"+String.valueOf(offset)).getID().substr(3);
}