2013-08-26 134 views
0

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

例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)方法,但是如果一天改变了,那就不起作用。

回答

0

格式化如果你只有两个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 
} 
+0

感谢您的回答。这会在不同的时区工作吗? – RiThBo

+0

我认为它会如果我使用Locale.getDefault()。 – RiThBo

+1

是的,这会给你用户的当前'Locale'。 – Nick

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()); 
+0

谢谢,但我需要能够格式化日期,以便用户可读。 – RiThBo

+0

我用另一个例子编辑了这个问题。此方法适用于第一个示例 – RiThBo

+0

我还添加了详细信息/上下文以尝试帮助理解。感谢您的关注:-) – RiThBo