我需要比较两个日期。
我从我的数据库中读取其中一个类型为String
的其中一个。所以首先我以我需要的特定格式将String
转换为Date
,然后我以我想要的格式再次从系统中获取第二个Date
。
我的问题是,即使它们是相同的,我也会得到意想不到的结果。
我的代码是:
public class SaharDateComparerActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sahar_date_comparer);
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
String dateString ="18/02/2015";
Date datee = convertStringToDate(dateString);
Log.i("SAHAR","date 1: "+ dateFormat.format(datee).toString());
Date myDate = new Date();
Log.i("SAHAR", "date 2: "+dateFormat.format(myDate).toString());
int testttt= datee.compareTo(myDate);
boolean a = datee.toString().equals(myDate.toString());
Log.i("SAHAR", "date compared: "+String.valueOf(testttt));
Log.i("SAHAR", "date equal: "+String.valueOf(a));
}
public Date convertStringToDate(String strDate) {
// String startDateString = "06/27/2007";
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date date = null;
try {
date = df.parse(strDate);
String newDateString = df.format(date);
System.out.println(newDateString);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
你可以看到我的两个日期是相同的,但是当我使用compareTo()
和false
时,当我使用equals()
方法时,我得到-1!
答案 0 :(得分:1)
在清除数据库日期中缺少的时间单位后,您应该比较Date
个对象,即没有小时,分钟,秒等。这是影响结果的因素。
String dateString ="18/02/2015";
Date datee = convertStringToDate(dateString);
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
Log.i("SAHAR", "Comparison result: " + datee.equals(c.getTime()));
答案 1 :(得分:0)
这是因为这两个日期有不同的小时,分钟,秒......(你没看到你刚才做的toString()输出)
您可以将其删除:Compare two dates in Java
或者你可以在自己的Comperator中查看日/月/年。