在android中解析字符串并进行比较

时间:2013-03-15 10:05:27

标签: android

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

5 个答案:

答案 0 :(得分:2)

这样做。

您也可以使用afterbefore方法。

检查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时间制作的已经制作的方法