Android SimpleDateFormat无法识别日光时间

时间:2015-07-27 21:38:53

标签: android date timezone simpledateformat

我正在尝试将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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

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

更新部分:

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

这可以正确调整夏令时。

答案 1 :(得分:0)

使用的日期是在夏令时期间