【问题标题】:Android SimpleDateFormat not recognizing daylight timeAndroid SimpleDateFormat 无法识别夏令时
【发布时间】:2015-07-27 21:38:53
【问题描述】:

我正在尝试将 GMT 中给出的时间字符串解析为具有用户时区的新字符串。 SimpleDateFormat 将时间解析为 PST,而它应该是 PDT。打印当前时间提供正确的时区。我感觉问题可能在于使用日期,但我不确定该怎么做。

示例代码:

try {
        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a z", Locale.ENGLISH);
        Log.e("Current time", sdf.format(Calendar.getInstance().getTime()));
        sdf.applyPattern("HHmm z");
        Date date = sdf.parse("2137 GMT");
        sdf.applyPattern("hh:mm a z");
        Log.e("Parsed time", sdf.format(date));
    }catch (Exception e){ e.printStackTrace(); }

两个日志产生:

E/Current time﹕ 02:37 PM PDT
E/Parsed time﹕ 01:37 PM PST

任何帮助将不胜感激。

【问题讨论】:

    标签: android date timezone simpledateformat


    【解决方案1】:

    我终于能够找出问题所在。默认情况下,日期对象设置为 1970 年 1 月 1 日。夏令时在 1 月期间不适用,因此没有使用它。我所做的是将一年中的某一天添加​​到模式中,然后从日历中获取当前日期。

    更新部分:

    sdf.applyPattern("D HHmm z");
    Date date = sdf.parse(sdf.getCalendar().get(Calendar.DAY_OF_YEAR)+" 0420 GMT");
    

    这可以正确调整夏令时。

    【讨论】:

      【解决方案2】:

      使用的日期是夏令时

      【讨论】:

      • 感谢您的回复。我可能不清楚,但我希望 Parsed 时间是白天。当前显示为标准时间。
      猜你喜欢
      • 2020-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-03
      • 2014-09-30
      • 2019-09-01
      • 2015-04-18
      • 1970-01-01
      相关资源
      最近更新 更多