2012-12-11 17 views
1
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); 

的出放將是如何轉換GMT的偏移值的+/- HH:MM

偏移= 19800000個

offsetHrs = 5個

offsetMins = 30

GMT抵消= 5:30

我在ms sql server中使用這個偏移值來轉換時區。 SQL Server將採取以下格式

(+/-)HH:MM 

我的結果是5:30,但它給一個無效的時區錯誤 應該是+5:30。

在另一種情況下

時區的timeZone = TimeZone.getTimeZone( 「其他/ GMT」);

在這種情況下,偏移

將是 「0」

但MS SQL只需+00:00或-00:00(+/-符號必須)

任何一個可以幫助我如何以格式化(+/-)HH:MM格式的偏移量。

回答

11

您可以使用

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