1

在我的应用程序中,我需要比较以下格式给出的两个不同日期。

输入:有 2 个字符串格式的输入日期。

String actual="11/12/2012 11:26:04 AM";
String expected="21/12/2012 09:49:12 AM";

我正在尝试使用下面的 java 代码进行比较。


SimpleDateFormat format= new SimpleDateFormat("dd/MM/YYYY hh:mm:ss a");
Date date1 = format.parse(actual);
System.out.println("Formated date1 is: "+format.format(date1).toString());       
// prints  :  01/01/2012 11:26:04 AM  Why????

Date date2= format.parse(expected);
System.out.println("Formated date2 is: "+format.format(date2).toString());        
// prints :  01/01/2012 09:49:12 AM  Why????

Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
if( !(cal1.compareTo(cal2)<=0))
{
 result=false;
 String errMsg +="Actual:"+actual+" date is not before or equal to expected:"+expected+" date\n";
 System.out.println(errMsg);
}

但是上面的代码没有按预期工作。请检查评论中提到的错误输出

我认为格式有问题。谁能帮帮我吗。

4

3 回答 3

5

你的格式应该是:

SimpleDateFormat format= new SimpleDateFormat("dd/MM/yyyy hh:mm:ss a");

注意year小写y

于 2013-01-03T09:58:32.920 回答
3

尝试:

SimpleDateFormat format= new SimpleDateFormat("dd/MM/yyyy hh:mm:ss a");

Ys 应该是小写的。

于 2013-01-03T09:58:08.633 回答
0

您可以使用乔达时间。它有非常好的方法,比如isBefore()

在此处输入图像描述

String actual = "11/12/2012 11:26:04 AM";
String expected = "21/12/2012 09:49:12 AM";

DateTimeFormatter fmt = DateTimeFormat.forPattern("dd/MM/YYYY hh:mm:ss a");
DateTime dateTime1 = fmt.parseDateTime(actual);
DateTime dateTime2 = fmt.parseDateTime(expected);


if (dateTime1.isBefore(dateTime2)) {
    System.out.println("awesome");
}
于 2013-01-03T10:07:13.313 回答