我必须像这样串起来
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:
请帮我解决这个问题!
你错过了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");
这是日期比较的完整示例
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
这是带有代码和输出的屏幕截图
试试这个方法
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;
}
您错过了y
格式中的 a 。这一年需要4y
个(尽管它可能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
}