【问题标题】:Compare two dates with time whose Formate is yyyy-MM-dd HH:mm:ss in Android比较Android中格式为yyyy-MM-dd HH:mm:ss的两个日期和时间
【发布时间】:2026-01-17 03:00:01
【问题描述】:

我必须比较格式为 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。现在我们必须比较它。我们如何做到这一点。

感谢任何帮助。

【问题讨论】:

标签: java android date datetime


【解决方案1】:

使用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);

【讨论】:

  • System.out.println() 调用中,您的字符串文字似乎缺少 open "
  • 我在 Android 中使用 SimpleDateFormat 代替 DateTimeFormatter。
【解决方案2】:

如果我了解您要做什么,您想使用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

【讨论】:

  • @SubhrajyotiMajumder 三元是语言的一部分。但如果您愿意,您始终可以将其实现为简单的if else
【解决方案3】:
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");                          
    }

【讨论】: