gpt4 book ai didi

android - "between"两个日期对象的查询在 Realm 中返回错误的输出

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:21 26 4
gpt4 key购买 nike

我正在存储带有时间戳的购买交易(与购买时完全相同的日期时间对象)。当我尝试从开始日期和结束日期中提取结果时,它给出了错误的结果。

这是我存储的日期对象/格式的示例,

27-01-2016
27-02-2016
10-05-2016
27-05-2016

这是检索两个日期之间的对象的查询,

RealmResults<Transactions> result = realm.where(Transactions.class)
.between("timestamp", start, end)
.findAll();

现在对于给定的 starting date: 01-01-16 & ending_date: 29-02-2016,它返回一个对象“27-01-2016”这是不正确的。

我的查询中是否缺少任何内容?

最佳答案

对于最新的 Realm 版本,我们可以使用 between(String fieldName, Date from, Date to)

如果您使用"27-01-2016" 格式,请在保存日期之前重置此值

    Calendar cal = new GregorianCalendar();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);


RealmObject.setDbDate(cal.getTime());

然后就可以查询了,确保你设置的startDateendDaterange正确

query.between(RealmObject.FIELD_DATE, startDate, endDate);

但是,有时 between() 是不够的,因为它不允许链接对象,例如,当您搜索其子项(也包括包含日期的 RealmObject)与日期范围匹配的所有项目时。

然后你可以使用 greaterThanOrEqualTo(String fieldName, Date value)lessThanOrEqualTo(String fieldName, Date value)

             query.greaterThanOrEqualTo(RealmObject.FIELD_LINKED_OBJECT + "." + LinkedObject.FIELD_DATE, startDate)
.findAll()
.where()
.lessThanOrEqualTo(RealmObject.FIELD_LINKED_OBJECT + "." + LinkedObject.FIELD_DATE, endDate)
.findAll();

关于android - "between"两个日期对象的查询在 Realm 中返回错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37137481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com