【问题标题】:How to convert an offset from GMT to the local timezone?如何将 GMT 的偏移量转换为当地时区?
【发布时间】:2014-07-22 10:34:51
【问题描述】:

我有两个输入:

  • 日期值
  • 一个整数(+8 或 -3 等),表示与 GMT 的偏移量

使用 Java,如何将给定的日期值转换为本地时区的相应日期/时间? Date 类中似乎没有任何时区偏移功能。

谢谢!

【问题讨论】:

    标签: java date timezone


    【解决方案1】:

    (如果您不想使用JodaTime)使用TimeZonesetRawOffset 以及来自此答案的代码:https://stackoverflow.com/a/19378721/360211

    【讨论】:

      【解决方案2】:

      我认为您需要使用 TimeZone.getAvailableIDs(rawOffsetinMiliSeconds) 来获取时区值。 工作示例:

      Date now = new Date();  
      SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
      sdf1.setTimeZone(TimeZone.getTimeZone("UTC"));  
      System.out.println(sdf1.format(now));  
      SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
      sdf2.setTimeZone(TimeZone.getTimeZone((TimeZone.getAvailableIDs(5*1000*3600))[0]));  
      System.out.println(sdf2.format(now));  
      

      【讨论】:

      • “时区”和“时区偏移”是两个不同的东西。使用此代码将为您提供使用此偏移量的第一个时区,但这不一定是正确的时区。
      • RTFQ 他想要“本地时区的日期/时间”而不是选择的时区名称
      猜你喜欢
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 2015-01-03
      相关资源
      最近更新 更多