Любая утилита в JDK для форматирования часового пояса в конкретную строку - PullRequest
2 голосов
/ 19 декабря 2009

Я буду извлекать значения из диапазона от -12 до +12, и мне нужно преобразовать его в строку формата определенного часового пояса.

, например

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

Есть ли какая-нибудь готовая утилита, которую я пропустил и которая делает то же самое в JDK6?

Ответы [ 2 ]

1 голос
/ 19 декабря 2009

В JDK нет ничего встроенного, что дало бы вам точно формат, который вы указали (без каких-либо манипуляций). SimpleDateFormat ("Z") близко, но это дает вам часовой пояс в формате RFC 822 , который не совсем то, что вы запрашиваете.

Вы могли бы просто упростить вещи и сделать это:

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";
    }
}
0 голосов
/ 19 декабря 2009

Посмотрите на TimeZone

Преобразуйте ваш ввод как:

int offset = -3;
String cv = TimeZone.getTimeZone("GMT"+String.valueOf(offset)).getID();

... строка 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);
}
...