【问题标题】:how to convert GMT offset value to +/- HH:MM如何将 GMT 偏移值转换为 +/- HH:MM
【发布时间】:2012-12-11 15:18:34
【问题描述】:
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 格式格式化偏移量。

【问题讨论】:

    标签: java datetime timezone string-formatting


    【解决方案1】:

    你可以使用

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

    【讨论】:

    • 这里不需要考虑夏令时吗?我错过了什么吗?
    猜你喜欢
    • 2022-09-30
    • 2014-07-22
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多