Android GreenDao - 如何比较两个日期字符串?

时间:2016-09-21 18:17:59

标签: android date greendao

我在java.util.Date类中添加了自定义类型MainGenerator的字符串属性很少。 在querybuilder中如何将这些字符串与ge或le或gt或lt进行比较。 我将db值保存在字符串类型中,我将它们像这样比较

qb.queryBuilder().where(TestDao.Properties.Date_entered.ge(start)).list();

它不起作用。

4 个答案:

答案 0 :(得分:2)

如果您使用greenDao,那么在您的MainGenerator中,您必须将日期设为

testdao.addDateProperty("date_entered").notNull();

所以qb.queryBuilder().where(TestDao.Properties.Date_entered.ge(start)).list(); 开始应为 java.util.Date

答案 1 :(得分:1)

日期持久化为long类型的时间戳。因此,对于查询参数,您还应该使用长值。

答案 2 :(得分:1)

首先在String中解析日期,因为您要以字符串格式在数据库中保存日期。然后查询数据。这是示例代码。

SimpleDateFormat dateFormat;
Calendar calendar = Calendar.getInstance(); 
//Modify Calendar here according to your requirement.

dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
//Check if you have different date format then replace in above line.

String dateString = dateFormat.format(calendar.getTime());

//Then query your data
qb.queryBuilder().where(TestDao.Properties.Date_entered.ge(dateString )).list();

答案 3 :(得分:0)

您可以将字符串日期转换为毫秒,并可以比较结果的值:

   public boolean checkDates(String date1, String date2) {
            long milliDate1 = getMilliFromDate(date1);
            long milliDate2 = getMilliFromDate(date2);

            //Check date according to your requirement and condition
            return milliDate1 < milliDate2;
        }

        public long getMilliFromDate(String dateFormat) {
            Date date = new Date();
        // "dd/MM/yyyy" this is date format i use you can use your own
        //format which you are storing in local database like time stamp "yyyy-MM-dd HH:mm:ss"
            SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
            try {
                date = formatter.parse(dateFormat);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return date.getTime();
        }