我有问题。我有两个字符串。每个元素都有日期格式。我可以使用Date.parse(string)
来解析字符串到目前为止。现在我有一个问题,我怎么能比较这两个字符串,因为我想检查哪个日期更高。如果我有一个字符串6-05-2012
和第二个12-05-2012
我想检查哪个日期更高(在这种情况下将是12-05-2012
)。我怎么能这样做?也许是其他方式,没有解析到目前为止?
答案 0 :(得分:2)
这样做。
您也可以使用after
和before
方法。
检查here。
public void compareDate() {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse("2009-12-31");
Date date2 = sdf.parse("2010-01-31");
if(date1.compareTo(date2)>0){
Log.v("app","Date1 is after Date2");
}else if(date1.compareTo(date2)<0){
Log.v("app","Date1 is before Date2");
}else if(date1.compareTo(date2)==0){
Log.v("app","Date1 is equal to Date2");
}
} catch(Exception e) { }
}
答案 1 :(得分:1)
private Date compareDates(final String dateString)
{
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
Date date = null;
try {
format.parse(dateString);
} catch (Exception e) {
Log.d(getClass().getName(), e.getMessage());
}
return date;
}
现在您可以比较两个日期。希望这有助于更多地参考SimpleDateFormat
,请查看here。不,您可以使用date.getTime()
来比较您的日期。
答案 2 :(得分:1)
试试这个 -
String dtStart = "2010-10-15T09:27:37Z";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
try {
Date date = format.parse(dtStart);
System.out.println(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
OR
public static long compareTo( java.util.Date date1, java.util.Date date2 )
{
//returns negative value if date1 is before date2
//returns 0 if dates are even
//returns positive value if date1 is after date2
return date1.getTime() - date2.getTime();
}
String strDate1 = "10-JAN-1920";
String strDate2 = "10-APR-1950";
SimpleDateFormat sdf = new SimpleDateFormat( "dd-MMM-yyyy" );
java.util.Date d1 = sdf.parse( strDate1 );
java.util.Date d2 = sdf.parse( strDate2 );
System.out.println( "1. " + sdf.format( d1 ).toUpperCase() );
System.out.println( "2. " + sdf.format( d2 ).toUpperCase() );
if ( compareTo( d1, d2 ) < 0 )
{
System.out.println( "d1 is before d2" );
}
else if ( compareTo( d1, d2 ) > 0 )
{
System.out.println( "d1 is after d2" );
}
else
{
System.out.println( "d1 is equal to d2" );
}
答案 3 :(得分:1)
我这是另一种比较日期以使用日期类本身的最佳方法
void dateComparator() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse("2009-12-31");
Date date2 = sdf.parse("2010-01-31");
if (date1.before(date2)) {
System.out.println("Date1 is before Date2");
} else if (date1.after(date2)) {
System.out.println("Date1 is after Date2");
} else if (date1.equals(date2)) {
System.out.println("Date1 is equal to Date2");
} else {
System.out.println("How to get here?");
}
}
答案 4 :(得分:0)
你最好使用Joda时间。有关详细信息,请参阅http://joda-time.sourceforge.net/index.html。标准API在某种程度上是有限且复杂的,并迫使您重新发明在Joda时间制作的已经制作的方法