2016-11-17 52 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對你的支持