-1

我必须像这样串起来

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:

请帮我解决这个问题!

4

4 回答 4

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");
于 2013-10-03T10:46:54.437 回答
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

这是带有代码和输出的屏幕截图 在此处输入图像描述

于 2013-10-03T10:49:04.873 回答
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;
}
于 2013-10-03T10:50:57.860 回答
0

您错过了y格式中的 a 。这一年需要4y个(尽管它可能yyyyyyy. 要获取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
}
于 2013-10-03T10:47:57.993 回答