我有一个问题。我有一个领域数据库,其中每个条目都有一个 ID 和一个 DateCreated 。我将在图表中显示这些内容,该图表可以在上周,上个月和去年等范围之间进行过滤。
基本上,我想知道如何能够计算出不同日期的条目数,以便在折线图中显示它们。谢谢!
答案 0 :(得分:0)
在您的情况下,我将使用Realm(自Realm 0.88.0起)使用setter并修改RealmObject中其他多个字段的功能。这样,您可以将dateCreated
与数据分开放置,这样就不必执行what this answer says。
public class MyClass extends RealmObject {
@Index
private long createdDay;
@Index
private long createdMonth;
@Index
private long createdYear;
@Index
private Date createdDate;
public void setCreatedDate(Date date) {
Calendar calendar = Calendar.getInstance();
int month = calendar.get(Calendar.MONTH) + 1; // Calendar is 0...11
this.createdMonth = month;
int day = calendar.get(Calendar.DAY_OF_MONTH);
this.createdDay = day;
int year = calendar.get(Calendar.YEAR);
this.createdYear = year;
this.createdDate = date;
}
}
现在有了这个课程,你可以做
realm.where(MyClass.class).equalTo("createdYear", 2018) // for year
realm.where(MyClass.class).equalTo("createdYear", 2018)
.equalTo("createdMonth", 1) // for month
realm.where(MyClass.class).equalTo("createdYear", 2018)
.equalTo("createdMonth", 1)
.equalTo("createdDay", 12) // for day
您将获得2018年创建的对象,而不必创建从2018-01-01@00:00:00.000
到2018-12-31@23:59:59.999
的日期。
但是,当然,使用getActualMinimum和getActualMaximum创建日期也可以。
编辑:
实际上,您的案件甚至可能比我上面所说的要简单,因为您只需要:
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -7);
Date lastWeek = calendar.getDate();
RealmResults<MyClass> results = realm.where(MyClass.class)
.greaterThanOrEqualTo("createdDate", lastWeek)
.findAll();