检查两个 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
请帮忙。
【问题讨论】:
考虑不使用Date
、Calendar
和SimpleDateFormat
。这些课程设计不良且早已过时。使用来自java.time, the modern Java date and time API 的LocalDate
和DateTimeFormatter
。对于 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 日期是不是相同 |安卓[重复]的主要内容,如果未能解决你的问题,请参考以下文章
需要 mongodb 查询来检查日期是不是在存储在集合文档中的两个日期之间[重复]
如何检查字符串是不是匹配某种日期格式?? JAVA [重复]