检查两个 Java 日期是不是相同 |安卓[重复]

Posted

技术标签:

【中文标题】检查两个 Java 日期是不是相同 |安卓[重复]【英文标题】:Checking if Two Java Dates are Same Date | Android [duplicate]检查两个 Java 日期是否相同 |安卓[重复] 【发布时间】:2021-12-22 17:16:12 【问题描述】:

我想检查两个日期。如果两个日期相同,则 recyclerview 将显示当天的销售报告。

我设置了一个日期选择器。

DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() 
        @Override
        public void onDateSet(DatePicker datePicker, int year, int month, int day) 
            calendar.set(Calendar.YEAR, year);
            calendar.set(Calendar.MONTH, month);
            calendar.set(Calendar.DAY_OF_MONTH, day);
            //mills = calendar.getTimeInMillis();
            dateChange();        
        
    ;

    tvDate.setOnClickListener(view -> 
        DatePickerDialog datePickerDialog = new DatePickerDialog(context, date, calendar.get(Calendar.YEAR),
                calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
        datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis());
        datePickerDialog.show();

    );

我希望当我选择一个日期时,recyclerview 在该日期从 SQLite 数据库显示报告。我将如何检查数据库日期和我的日期选择器日期是否相同?

我试过了。

private void dateListArray()   

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
    String currDate = simpleDateFormat.format(calendar.getTimeInMillis());

    for (ProductModel p : myDatabase.getAllReport()) 

        String dates = simpleDateFormat.format(new Date(p.getDate()));

        //check datepicker date and allreport date from database
        if (currDate == dates)           
            dateList.add(p)

        else

        
    
    adapter.setFilter(dateList);//filter recyclerview

请帮忙。

【问题讨论】:

考虑不使用DateCalendarSimpleDateFormat。这些课程设计不良且早已过时。使用来自java.time, the modern Java date and time API 的LocalDateDateTimeFormatter。对于 API 级别 26 以下的 android,大部分情况下可通过脱糖获得。 在链接的原始问题下,好的答案是the one by Istvan here。 this answer by Basil Bourque 在其他原件下的深度更多。如果您可以完全避免使用Date,而只使用LocalDate.isEqual(),那就更好了。见answer by Lorcan O’Neill。 Thacks O,尼尔。我得到我的答案。我使用了本地日期。它非常简单明了。但它需要 26 个 API。 我读到对于 API 级别 26 下的 Android,您可以使用 LocalDate 和其他 java.time 类,尽管 Java 8+ APIs available through desugaring | Android Developers。我自己不是 Android 开发人员。 【参考方案1】:
 if (currDate == dates)           
      dateList.add(p)
 

java.utils.Date 提供的方法getDate(Java 8 后已弃用)

如果您想比较 2 个日期,请将您的日期字符串值转换为 java.utils.Date,使用 getDate 然后像这样比较 2 个值

if (currDate.getDate() == dates.getDate())           
   dateList.add(p);

【讨论】:

如果不推荐使用获取日期,那么检查日期的简单方法是什么。 不正确。我将这两个日期设置为new Date(1518297681000L)new Date(1636516803331L),并且在我的时区,条件结果为真。日期是 2018 年 2 月 10 日星期六 22:21:21 CET 和 2021 年 11 月 10 日星期三 05:00:03 CET 2021,所以根本不是同一日期。此外,getDate()Date 的大多数其他方法自 Java 1.1 以来已被弃用,1997 年 2 月,它将很快成为 25 年。不推荐使用的原因是:它们跨时区工作不可靠。 我认为 offsetDateTime 效率更高,我错过了阅读问题,我专注于“Java Date” 我找到了解决方案。 Locadate 易于使用并提供完美的解决方案。 localDate = instant.ofEpochMilli(calendar.getTimeInMillis()).atZone(ZoneId.systemDefault()).toLocalDate(); for (ProductModel p : myDatabase.getAllReport()) databaseLocaldate = Instant.ofEpochMilli(p.getDate()).atZone(ZoneId.systemDefault()).toLocalDate(); if (localDate.equals(databaseLocaldate)) dateList.add(p);

以上是关于检查两个 Java 日期是不是相同 |安卓[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java:检查当前日期是不是在特定日期范围内[重复]

需要 mongodb 查询来检查日期是不是在存储在集合文档中的两个日期之间[重复]

如何检查字符串是不是匹配某种日期格式?? JAVA [重复]

检查两个数组是不是包含相同的对象 - 反应 componentDidUpdate [重复]

检查日期是不是存在(第 30 天/第 31 天)[重复]

如何测试两个日期时间是不是相同? [复制]