将String转换为dateTime

时间:2013-10-03 10:43:31

标签: java date

我必须像这样的字符串

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 个答案:

答案 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

这是包含代码和输出的屏幕截图 enter image description here

答案 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;
}