我有以下Java:
DateFormat formatter = new SimpleDateFormat(
"EEE MMM dd yyyy HH:mm:ss zZ (zzzz)", Locale.ENGLISH);
Calendar cal = Calendar.getInstance();
cal.set(2011, Calendar.APRIL, 1);
out.println(formatter.format(cal.getTime()));
out.println();
Date date;
try {
date = formatter
.parse("Fri Apr 01 2011 00:00:00 GMT-0400 (Eastern Daylight Time)");
} catch (ParseException e) {
out.println("Failed to parse date: " + e.getMessage());
e.printStackTrace(out);
}
这在servlet中,并且
Calendar
构造的日期显示为:星期五2011年4月1日16:42:24 EDT-0400(东部夏令时间)
除了
EDT-0400
与所需的GMT-0400
之外,这看起来与我要解析的日期字符串的格式相同。尝试解析日期字符串时,代码失败:java.text.ParseException:无法解析的日期:“星期五2011年4月1日00:00:00 GMT-0400(东部夏令时间)”
我如何解析这样的字符串?这来自存储在WebSQL本地存储中的Sencha Touch 1.1.1模型中的JavaScript日期。
最佳答案
由于某种原因,GMT-0400无法正常工作,而UTC-0400正在正常工作。您可以将GMT替换为UTC。
请注意,这部分将被完全忽略-时区将根据括号中的内容进行解析(至少在我的机器上为JDK 6)
关于java - Java-无法解析的日期,需要与“GMT-0400”匹配的格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9490373/