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

标签 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);

输出将是

offset = 19800000

offsetHrs=5

offsetMins=30

GMT offset = 5:30

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

(+/-)HH:MM

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

另一种情况

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

in this case offset will be "0"

but ms sql takes only +00:00 or -00:00 (+/- sign must)

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

最佳答案

你可以使用

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

关于java - 如何将 GMT 偏移值转换为 +/- HH :MM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13822814/

相关文章:

java - org.rosuda.REngine.Rserve.RserveException : eval failed while running R script from java

java - Eclipselink Pooling 相当于 C3PO

Python/ Pandas /日期时间 : transform entire lists in a column to datetime

php - 如何在php/mysql中将时间保存为UTC时间?

java - 不能从静态上下文中引用非静态变量名

java - 将注释限制在非最终字段

c# - 日期时间。现在在同事的计算机上关闭一个小时

Javascript:将日期/时间从毫秒转换为人类可读的字符串?

java - 从 Oracle 数据库中检索日期列时如何忽略 java 所做的 DST 调整?

c# - 缺少 Microsoft 时区