私はこのような文字列をしなければなりません
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");
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
}
これは日付比較の完全な例です
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;
}