2
TimeZone timeZone = TimeZone.getTimeZone("Asia/Calcutta");

    int offset1 = timeZone.getRawOffset();
    System.out.println("offset = "+ offset);

    int offsetHrs = offset / 1000 / 60 / 60;
    int offsetMins = offset / 1000 / 60 % 60;

    System.out.println("offsetHrs="+ offsetHrs);
    System.out.println("offsetMins="+ offsetMins);


    GMTOffset = offsetHrs + ":" + offsetMins;
    System.out.println("GMTOffset = " + utzOffset);

输出将是

偏移量 = 19800000

偏移小时=5

offsetMins=30

格林威治标准时间偏移 = 5:30

我在 ms sql server 中使用这个偏移值来转换时区。sql server 将采用以下格式

(+/-)HH:MM

我的结果是 5:30 但它给出了一个无效的时区错误,它应该是 +5:30 。

在另一种情况下

TimeZone timeZone = TimeZone.getTimeZone("Etc/GMT");

在这种情况下,偏移量将为“0”

但是 ms sql 只需要 +00:00 或 -00:00 (+/- 符号必须)

任何人都可以帮助我如何以 (+/-)HH:MM 格式格式化偏移量。

4

1 回答 1

13

你可以使用

int offset = timeZone.getRawOffset();
String gmtTZ = String.format("%s%02d:%02d", 
               offset < 0 ? "-" : "+", 
               Math.abs(offset) / 3600000,
               Math.abs(offset) / 60000 % 60);
于 2012-12-11T15:23:26.530 回答