我必须像这样的字符串
Thu Oct 03 07:47:22 2013
Mon Jul 05 08:47:22 2013
我想比较这些日期,我使用SimpleDateFormat("EEE MMM dd HH:mm:ss yyy")
,但它给了我一个例外:java.text.ParseException: Unparseable date:
请帮我解决这个问题!
答案 0 :(得分:1)
你错过了一年的y
:
EEE MMM dd HH:mm:ss yyyy
但您应该使用更强大的库org.jodatime
。
import org.joda.time.format.DateTimeFormat;
import org.joda.time.DateTime;
DateTimeFormat format = DateTimeFormat.forPattern("EEE MMM dd HH::mm:ss yyyy");
DateTime time = format.parseDateTime("Thu Oct 03 07:47:22 2013");
答案 1 :(得分:0)
您错过了格式y
。这一年需要4 y
(虽然它可以与yyy
一起使用,但最好使用yyyy
,因为它会让您的格式更易于被其他人阅读)。要获取DateTime
对象,您可以使用通过解析字符串来构建Date
来获得的DateTime
对象。
尝试这样的事情: -
String str = "Thu Oct 03 07:47:22 2013";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy"); // You missed a y here.
try {
Date d = sdf.parse(str);
DateTime dt = new DateTime(d.getTime()); // Your DateTime Object.
} catch (ParseException e) {
// Parse Exception
}
答案 2 :(得分:0)
这是日期比较的完整示例
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class dateCompare
{
public static void main( String[] args )
{
try{
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyy");
Date date1 = sdf.parse("Thu Oct 03 07:47:22 2013");
Date date2 = sdf.parse("Mon Jul 05 08:47:22 2013");
System.out.println(sdf.format(date1));
System.out.println(sdf.format(date2));
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
if(cal1.after(cal2)){
System.out.println("Date1 is after Date2");
}
if(cal1.before(cal2)){
System.out.println("Date1 is before Date2");
}
if(cal1.equals(cal2)){
System.out.println("Date1 is equal Date2");
}
}catch(ParseException ex){
ex.printStackTrace();
}
}
}
<强>输出强>
Thu Oct 03 07:47:22 2013
Fri Jul 05 08:47:22 2013
Date1 is after Date2
这是包含代码和输出的屏幕截图
答案 3 :(得分:0)
尝试使用此方法
public static Date formatStringToDate(String strDate) throws ModuleException {
Date dtReturn = null;
if (strDate != null && !strDate.equals("")) {
int date = Integer.parseInt(strDate.substring(0, 2));
int month = Integer.parseInt(strDate.substring(3, 5));
int year = Integer.parseInt(strDate.substring(6, 10));
Calendar validDate = new GregorianCalendar(year, month - 1, date);
dtReturn = new Date(validDate.getTime().getTime());
}
return dtReturn;
}