我真的不知道从哪里开始调试这个。
代码:
String date = "Mon, 15 Oct 2012 20:32:12 +0000 (GMT)";
SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:MM:ss Z");
try {
Date date2 = format.parse(date);
System.err.println("parsed: " + date2);
}
catch (ParseException e) {
System.err.println("Failed to parse: " + format);
}
输出:
parsed: Fri Aug 15 16:00:12 EDT 2014
为什么这会在两年零两个月后结束?
答案 0 :(得分:9)
使用小mm
分钟
EEE, dd MMM yyyy HH:mm:ss Z
答案 1 :(得分:4)
Jigar Joshi已经回答了主要问题 - 但只是提示设置DateFormat.setLenient(false)
(参见JavaDoc)将避免很多像这样的解析问题,因为格式不会默默接受无意义的价值观。
第二个提示(因为我最近这一点)是要始终用a.m.和p.m来测试你的DateFormats。时间戳,因为很容易混合hh
和HH
格式(12小时和24小时格式)。否则,您可以发现您的测试数据工作正常,但实际数据会因错误混乱而失败。