如何将GMT偏移值转换为+/- HH:MM

时间:2012-12-11 15:18:34

标签: java datetime timezone string-formatting

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

     

offsetHrs = 5

     

offsetMins = 30

     

GMT偏移= 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 格式的偏移量。

1 个答案:

答案 0 :(得分:11)

您可以使用

int offset = timeZone.getRawOffset();
String gmtTZ = String.format("%s%02d:%02d", 
               offset < 0 ? "-" : "+", 
               Math.abs(offset) / 3600000,
               Math.abs(offset) / 60000 % 60);