Java 如何将GMT偏移值转换为+;/-嗯

Java 如何将GMT偏移值转换为+;/-嗯,java,datetime,timezone,string-formatting,Java,Datetime,Timezone,String Formatting,这场比赛将被淘汰 偏移量=19800000 offsetHrs=5 偏移时间=30分钟 格林尼治标准时间偏移=5:30 我正在ms sql server中使用此偏移值转换时区。 sql server将采用以下格式 TimeZone timeZone = TimeZone.getTimeZone("Asia/Calcutta"); int offset1 = timeZone.getRawOffset(); System.out.println("offset = "+ offs

这场比赛将被淘汰

偏移量=19800000

offsetHrs=5

偏移时间=30分钟

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

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

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);
我的结果是5:30,但它给出了一个无效的时区错误 应该是+5:30

在另一种情况下

时区TimeZone=TimeZone.getTimeZone(“Etc/GMT”)

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

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

谁能帮我把偏移量格式化成(+/-)HH:MM格式

您可以使用

(+/-)HH:MM
int offset=timeZone.getRawOffset();
String gmtTZ=String.format(“%s%02d:%02d”,
偏移量<0?”-:“+”,
算术绝对值(偏移量)/3600000,
计算资产负债表(抵销)/60000%60);

我们这里还需要考虑DST吗?我遗漏了什么吗?
int offset = timeZone.getRawOffset();
String gmtTZ = String.format("%s%02d:%02d", 
               offset < 0 ? "-" : "+", 
               Math.abs(offset) / 3600000,
               Math.abs(offset) / 60000 % 60);