0

我有个问题。我有两个字符串。每个元素都有日期格式。我可以Date.parse(string)用来解析字符串到日期。现在我有一个问题,如何比较这两个字符串,因为我想检查哪个日期更高。如果我有一个字符串6-05-2012和第二个字符串,12-05-2012我想检查哪个日期更高(在这种情况下是12-05-2012)。我怎么能这样做?也许是其他方式,没有解析到日期?

4

5 回答 5

2

像这样做。

您也可以使用afterandbefore方法。

在这里检查。

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 回答