2016-11-17 79 views
1

这哪里是我的境界数据库 enter image description here境界与日期返回NULL

这是我与其中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

+0

缺省情况下支持在领域进行日期比较。你确定在realm中至少存在StepEntry实例,其中“date”与你在'where'中传递的'stepEntry.getDate()'的毫秒数完全相同吗? – Tushar

+0

是的,我看到Realm支持'Date'类型。 @Tushar请看2张图片你会看到2天是一样的 –

+0

它们在毫秒上可能不相等。毫秒不作为'Date.toString()'的一部分打印。你需要验证'date1.getTime()== date2.getTime()'。 –

回答

1

工作。如果你不能用equalTo找到你的对象(场,日期)则表示您在条件中提供的日期不匹配。

境界milisecond精密自0.90.0,所以你必须日期以小时,分钟,秒,毫秒方面匹配(技术上长期纪元时间值必须是完全一样的)

StepEntry realmDate = bgRealm.where(StepEntry.class).equalTo("date", date).findFirst(); 

如果有是具有给定日期的数据库中的对象(date.getTime()与数据库中的日期相同),那么它就起作用。

1

境界也比较毫秒,但在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对你的支持