0

私は問題があります。私は2つの弦を持っています。すべての要素には日付形式があります。Date.parse(string)これまでの文字列の解析に使用できます。どちらの日付が高いかを確認したいので、この2つの文字列をどのように比較できるかという問題があります。1つの文字列6-05-2012と2番目の文字列がある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;
}

これで、2つの日付を比較できます。これがより多くの参照に役立つことを願って、ここSimpleDateFormatをチェックしてください。いいえ、日付を比較するために使用できます。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

これは、日付を比較して日付クラス自体を使用するためのもう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

城田時間を使うほうがいいです。詳細については、 http://joda-time.sourceforge.net/index.htmlを参照してください。標準のAPIはどういうわけか制限されて複雑であり、Jodaの時代に作られたすでに作られたメソッドを再発明する必要があります

于 2013-03-15T10:08:18.203 に答える