我试图解析在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
任何帮助都将非常感激。
我终于找到了问题所在。默认情况下,日期对象被设置为1970年1月1日。日光节约时间在一月份不适用,所以它没有使用它。我所做的就是将一年中的哪一天添加到模式中,然后从日历中获取当前日期。
更新部分:
sdf.applyPattern("D HHmm z");
Date date = sdf.parse(sdf.getCalendar().get(Calendar.DAY_OF_YEAR)+" 0420 GMT");
正确调整夏令时
使用的日期为夏令时