我正在尝试将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
非常感谢任何帮助。
答案 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)
使用的日期是在夏令时期间