0

我想比较两个日期,为此我将字符串转换为日期格式。但在转换过程中,日期格式更改为“02/01/2013”​​和“03/01/2014”。它在我的逻辑中出错。任何一位请告诉我如何以我的日期格式比较两天。

      String fdate="01/02/2012";
      String tdate="01/03/2013";
      SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
      Date frmdt=new Date(fdate);
      String s1 = sdf.format(frmdt);
      Date todt=new Date(tdate);
      String s2 = sdf.format(todt);
      Date frmdate = sdf.parse(s1);
      Date todate = sdf.parse(s2);
        if(frmdate.compareTo(todate)<=0){
             //process;      
         }
4

3 回答 3

3

试试这个:

  String fs = "01/02/2012";
  String ts = "01/03/2013";
  DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
  sdf.setLenient(false);
  Date fdate = sdf.parse(fs);
  Date tdate = sdf.parse(ts);
  if (fdate.before(tdate) || f.date.equals(tdate)) {
         //process;      
  }

你有太多事情要做。这要简单得多。

于 2013-06-21T10:15:26.510 回答
3

在我看来,您应该SimpleDateFormat.parse改为致电:

// Using the US locale will force the use of the Gregorian calendar, and
// avoid any difficulties with different date separator symbols etc.
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy", Locale.US);
sdf.setTimeZone(TimeZone.getTimeZone("UTC")); // Avoid DST complications
sdf.setLenient(false);

Date fromDate = sdf.parse(fromDateText);
Date toDate = sdf.parse(toDateText);

// Alternatively: if (!fromDate.after(toDate))
if (fromDate.compareTo(toDate) <= 0) {
    ...
}

我实际上建议您尽可能使用Joda Time,您可以在其中使用LocalDate类型来更准确地表示您的数据。

于 2013-06-21T10:15:34.160 回答
0

你这样做是错的 :)

String fdate="01/02/2012";
String tdate="01/03/2013";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date frmdate = sdf.parse(fdate);
Date todate = sdf.parse(tdate);
  if(frmdate.compareTo(todate)<=0){
       //process;      
   }

Date您正在使用您的格式传递给未解析的日期。也Date(String)已弃用。DateFormat.parse(String)是正确的。

于 2013-06-21T10:19:26.287 回答