我正在尝试将String转换为Date以从当前日期进行比较,并抛出解析异常
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
try {
java.util.Date cookiedate = format.parse("Tue Apr 29 11:40:55 GMT+04:00 2014");
Calendar currentDate = Calendar.getInstance();
String dateNow = format.format(currentDate.getTime());
java.util.Date currDate = format.parse(dateNow);
if (currDate.getTime() > cookiedate.getTime()) {
return true;
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:3)
在format
中,"yyyy-MM-dd HH:mm:ss"
会匹配"2013-03-30 15:57:00"
之类的日期字符串,因此您获得了ParseException
。
如果您要解析"Tue Apr 29 11:40:55 GMT+04:00 2014"
,则应使用"EEE MMM dd HH:mm:ss z yyyy"
将代码更改为
SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
答案 1 :(得分:2)
首先,您应该使用Date
格式将字符串日期解析为EEE MMM dd HH:mm:ss Z yyyy
对象,然后将Date
转换为yyyy-MM-dd HH:mm:ss
格式,如下所示...
SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy");
try {
Date cookiedate = format.parse("Tue Apr 29 11:40:55 GMT+04:00 2014");
Calendar currentDate = Calendar.getInstance();
format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
cookiedate = format.parse(format.parse(cookiedate));
String dateNow = format.format(currentDate.getTime());
Date currDate = format.parse(dateNow);
if (currDate.getTime() > cookiedate.getTime()) {
return true;
}
} catch (ParseException e) {
e.printStackTrace();
}
答案 2 :(得分:1)
我认为很明显,格式化日期"Tue Apr 29 11:40:55 GMT+04:00 2014"
与格式"yyyy-MM-dd HH:mm:ss"
不匹配。
如果您使用格式"yyyy-MM-dd HH:mm:ss"
,则应解析2014-03-30 10"59:23
等字符串。
如果要解析"Tue Apr 29 11:40:55 GMT+04:00 2014"
之类的字符串,则应使用EEE MMM dd HH:mm:ss z yyyy
之类的格式。 (我不确定z
,可能应该是Z
)。