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

Rav*_*avi 1 java timezone datetime 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);
Run Code Online (Sandbox Code Playgroud)

输出将是

offset = 19800000

offsetHrs = 5

offsetMins = 30

GMT偏移= 5:30

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

(+/-)HH:MM
Run Code Online (Sandbox Code Playgroud)

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

在另一个案例中

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

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

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

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

Pet*_*rey 11

你可以用

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