比较格式化日期

时间:2013-08-26 19:13:54

标签: android date string-comparison date-comparison

我创建了一个日期,然后格式是这样的:

示例1:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss   dd/MM/yyyy");
                    String currentDate = sdf.format(new Date());

我想做的是检查此日期是否在另一个日期之前(也以相同的方式格式化)。我该怎么做呢?

示例2:

另外,我如何检查其中一个是否在另一个之前:

long setForLong = System.currentTimeMillis() + (totalTime*1000);
String display = (String) DateFormat.format("HH:mm:ss   dd/MM/yyyy", setForLong);

编辑:

我认为需要更多细节。我以两种不同的方式为两种不同的用途创建日期。第一次使用只是将当前日期格式化为字符串,因此对用户来说是可读的。在第二种情况下,我将System.currentTimeMillis使用日期并添加long。两者都会产生一个字符串。

两种方法都以完全相同的方式格式化日期,我将字符串设置为TextView。后来,我需要比较这些日期。我没有原始数据/日期/等,只有这些字符串。因为它们的格式是相同的,我可以很容易地比较它们。

我尝试了if(String1.compareTo(String2) >0 )方法,但如果更改日期则不起作用。

2 个答案:

答案 0 :(得分:1)

您应该使用Calendar来方便比较日期。

Calendar c1 = Calendar.getInstance();
c1.setTime(Date someDate);
Calendar c2 = Calendar.getInstance();
c2.setTime(Date anotherDate);
if(c1.before(c2)){
    // do something
}

您可以随时对其进行格式化

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss   dd/MM/yyyy");
String currentDate = sdf.format(c1.getTime());

答案 1 :(得分:1)

如果您只有两个String个可用日期的对象。您需要在自己的比较器类或其他对象中处理它们。在这种情况下,由于这些已经格式化为日期,您可以创建Date个对象并使用之前发布的方法进行比较。像这样:

String string = "05:30:33   15/02/1985";
Date date1 = new SimpleDateFormat("HH:mm:ss   dd/MM/yyyy", Locale.ENGLISH).parse(string);

String string2 = "15:30:33   01/02/1985";
Date date2 = new SimpleDateFormat("HH:mm:ss   dd/MM/yyyy", Locale.ENGLISH).parse(string2);

if(date1.getTime()>date2.getTime()) {
    //date1 greater than date2
}
else if(date1.getTime()<date2.getTime()) {
    //date1 less than date2
}
else {
    //date1 equal to date2
}