比较两个日期的时间,其格式为yyyy-MM-dd HH:mm:Android中的ss

时间:2014-07-31 05:20:26

标签: java android date datetime

我必须比较格式为 yyyy-MM-dd HH:mm:ss 的两个日期。我知道比较日期只能在日期之前或日期之后的方法。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String currentDateandTime = sdf.format(new Date());
String expiryTime = "2014-09-10 00:00:00";

但是,将日期和时间与当前日期和时间进行比较的最佳方法是什么。 就像我们有两个日期2014-09-10 00:00:00和当前日期的时间是2014-08-31 10:37:15。现在我们要比较它。我们如何做到这一点。

感谢任何帮助。

3 个答案:

答案 0 :(得分:5)

使用SimpleDateFormat将日期字符串转换为java.util.Date对象,并使用Date#afterDate#before方法比较这些日期对象。


java 8 中 - 使用新的Java Time API,使用DateTimeFormat解析日期字符串并获取LocalDate对象并进行比较。

DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
final LocalDate dt1 = dtf.parseLocalDate(dateString1);
final LocalDate dt2 = dtf.parseLocalDate(dateString2);

final boolean check = dt1.isAfter(dt2);
if(check)
    System.out.println(dt1 +" is after "+dt2);
else
    System.out.println(dt2 +" is after "+dt1);

答案 1 :(得分:4)

如果我理解你要做什么,你想使用SimpleDateFormat(并且你发布了一个好的模式)来将String(s)解析为Date(s )然后Date.before(Date)。将它们组合成类似的东西,

DateFormat sdf = new SimpleDateFormat(
    "yyyy-MM-dd HH:mm:ss");
String firstStr = "2014-09-10 00:00:00";
String secondStr = "2014-08-31 10:37:15";
Date first = sdf.parse(firstStr);
Date second = sdf.parse(secondStr);
boolean before = (first.before(second));
System.out.printf("%s is before %s",
    before ? firstStr : secondStr,
    before ? secondStr : firstStr);

输出

2014-08-31 10:37:15 is before 2014-09-10 00:00:00

答案 2 :(得分:2)

try{

      SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    } catch (ParseException e1) 
      {
    // TODO Auto-generated catch block
    e1.printStackTrace();
                        }

       String str1 = "2014-09-10 00:00:00";
       Date date1 = formatter.parse(str1);

        String str2 = "2014-08-31 10:37:15";
       Date date2 = formatter.parse(str2);

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