其中Date返回null的域

时间:2016-11-17 07:01:16

标签: java android realm

这是我的Realm数据库 enter image description here

以下是我的代码,其中其中 equalTo 的查找值,当我使用int时,如果我使用Date它不工作。
您将在下图中看到realmNumber返回值,realmDate返回null enter image description here

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

2 个答案:

答案 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的支持