以下是我的代码,其中其中和 equalTo 的查找值,当我使用int
时,如果我使用Date
它不工作。
您将在下图中看到realmNumber
返回值,realmDate
返回null
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(final Realm bgRealm) {
StepEntry realmNumber = bgRealm.where(StepEntry.class).equalTo("steps", 0).findFirst();
Date date = stepEntry.getDate();
StepEntry realmDate = bgRealm.where(StepEntry.class).equalTo("date", date).findFirst();
}
});
如何Realm
使用Date
答案 0 :(得分:1)
如果使用equalTo(字段,日期)找不到对象,则表示您在条件中提供的日期不匹配。
Realm具有毫秒精度,因为0.90.0,所以你的日期必须匹配小时,分钟,秒,毫秒(技术上长纪元时间值必须完全相同)
StepEntry realmDate = bgRealm.where(StepEntry.class).equalTo("date", date).findFirst();
如果数据库中有一个具有给定日期的对象(date.getTime()
与数据库中的日期相同)那么它就可以工作。
答案 1 :(得分:1)
Realm也比较毫秒,但在Date
对象中我们只能设置为second
。
因此,当我创建Date
对象时,我使用Calendar
将设置毫秒设置为0
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MINUTE, anyTime);
calendar.set(Calendar.SECOND, anyTime);
calendar.set(Calendar.MILLISECOND, 0);
date.setTime(calendar.getTimeInMillis());
这将有助于我将输入的时间与数据库中的时间进行比较 非常感谢@Christian Melchior的支持