JDK中的任何实用程序,用于将时区格式化为特定字符串

时间:2009-12-19 07:20:26

标签: java datetime

我将检索-12到+12&范围内的值。我需要将其转换为特定的时区格式字符串。

e.g。

-3 becomes -03:00
0 becomes Z
4 becomes +04:00

我是否忽略了在JDK6中做同样事情的现成实用工具?

2 个答案:

答案 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);
}