-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

y形式にa がありませんでした。年には4yが必要でした (ただし、 で問題なく動作する可能性がありますが、フォーマットが他の人にとって読みやすくなるため、yyy使用する方が適切です)。yyyyオブジェクトを取得するには、文字列を解析して取得しDateTimeたオブジェクトを使用して、 .DateDateTime

このようなことを試してください:-

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 に答える
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 に答える