我有个问题。我有两个字符串。每个元素都有日期格式。我可以Date.parse(string)
用来解析字符串到日期。现在我有一个问题,如何比较这两个字符串,因为我想检查哪个日期更高。如果我有一个字符串6-05-2012
和第二个字符串,12-05-2012
我想检查哪个日期更高(在这种情况下是12-05-2012
)。我怎么能这样做?也许是其他方式,没有解析到日期?
问问题
2799 次
5 回答
2
像这样做。
您也可以使用after
andbefore
方法。
在这里检查。
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) { }
}
于 2013-03-15T10:07:21.140 回答
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
请在此处查看。Noe 你可以date.getTime()
用来比较你的日期。
于 2013-03-15T10:09:27.390 回答
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();
}
或者
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" );
}
于 2013-03-15T10:09:30.217 回答
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?");
}
}
于 2013-03-15T10:13:04.003 回答
0
你最好使用 Joda 时间。有关详细信息,请参阅http://joda-time.sourceforge.net/index.html。标准 API 在某种程度上是有限和复杂的,并迫使你重新发明在 Joda 时代已经制作的方法
于 2013-03-15T10:08:18.203 回答