Android - 比较两个日期

时间:2015-10-09 07:48:35

标签: android date

我想在我的应用程序中比较两个日期

第一个日期将是今天的日期 第二个将来自数据库

要保存第二个日期,我的代码如下; (使用明天的日期来保持简单)

 Calendar calendar = Calendar.getInstance();
 calendar.add(Calendar.DAY_OF_YEAR, 1);
 Date tomorrow = calendar.getTime();
 DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");

 String tomorrowAsString = dateFormat.format(tomorrow);

所以tomorrowAsString (10-Oct-2015)存储在我的数据库中的表中

在另一种形式中,我检索该日期并将其放入字符串

String steepingDate = (c.getString(3));

我想我需要将该字符串转换为日期格式,然后使用以下内容获取今天的日期;

Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime();
DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");

String todayAsString = dateFormat.format(today);

以下是我被卡住的地方,因为我不确定如何将steepingDate变成Date,然后比较字符串的实际方式是什么,I& #39;我试过在网上看,但是我尝试了很多不同的方式,到目前为止还没有。我想知道两者中哪一个更重要

编辑:

我已经将一些答案结合起来并提出以下建议;

do {
      String steepingDate = (c.getString(3));
      SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
      Date steepingdate = formatter.parse(steepingDate);

      Calendar calendar = Calendar.getInstance();
      Date today = calendar.getTime();

      if(today.compareTo(steepingdate)>0)
      {
         CompleteSteeping.add(c.getString(1));
      }
      i += 1;
   }while (c.moveToNext());

然而在;

SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date steepingdate = formatter.parse(steepingDate);

我收到错误说明

' Unparseable date:" java.util.GregorianCalender [time = 1444461352665,areFieldsSet = true,Ienient = true \ zone = GMT,firstDayOfWeek = 1,minimalDaysInFirstWeek = 1,ERA = 1,YEAR = 2015年,月= 9,WEEK_OF_YEAR = 41,WEEK_OF_MONTH = 2,DAY_OF_MONTH = 10,DAY_OF_YEAR = 283,DAY_OF_WEEK = 7,DAY_OF_WEEK_IN_MONTH = 2,AM_PM = 0,HOUR = 7,HOUR_OF_DAY = 7,MINUTE = 15,SECOND = 52,微差= 665,ZONE_OFFSET = 0DST_OFFSET = 0]" (在偏移0处)

4 个答案:

答案 0 :(得分:7)

try{
     SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");

     String str1 = "9/10/2015";
     Date date1 = formatter.parse(str1);

     String str2 = "10/10/2015";
     Date date2 = formatter.parse(str2);

     if (date1.compareTo(date2)<0)
      {
         System.out.println("date2 is Greater than my date1");                         
      }

    }catch (ParseException e1){
        e1.printStackTrace();
    }

答案 1 :(得分:4)

如果您只想比较字符串,它将如下所示:

    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.DAY_OF_YEAR, 1);
    Date tomorrow = calendar.getTime();
    DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");

    String tomorrowAsString = dateFormat.format(tomorrow);

    calendar = Calendar.getInstance();
    Date today = calendar.getTime();

    String todayAsString = dateFormat.format(today);

    if(tomorrowAsString.equals(todayAsString))
        System.out.println(true);
    else
        System.out.println(false);

答案 2 :(得分:1)

  

这是我被困的地方,因为我不确定如何转动   steepingDate into a Date

您需要使用与您保存的字符串匹配的模式来实例化parse,并在其上调用table { border-left: 1px solid #000; border-left: 1px solid #000; }

  

那么比较字符串的实际方法是什么,我试过了   在网上看,但我尝试过很多不同的方式   到目前为止没有人工作

如果你必须比较日期以了解一个是否小于/更大/等于,那么Date有compareTo方法,它返回一个int&lt;如果此Date小于指定的Date,则为0;如果它们相等则为0,并且int>如果此日期更大,则为0。

答案 3 :(得分:1)

您可以将String日期转换为Date并进行比较

使用SimpleDateFormat类:

private Date parseDate(String date, String format) throws ParseException
{
    SimpleDateFormat formatter = new SimpleDateFormat(format);
    return formatter.parse(date);
}
Usage:

Date date = parseDate("19/05/2009", "dd/MM/yyyy");