我有幾個字符串屬性,在MainGenerator
類中添加了自定義類型java.util.Date
。 在querybuilder
如何將這些字符串與ge或le或gt或lt進行比較。 我保存字符串類型的分貝值和我比較像他們這樣Android的GreenDao - 如何比較兩個日期字符串?
qb.queryBuilder().where(TestDao.Properties.Date_entered.ge(start)).list();
它不工作。
我有幾個字符串屬性,在MainGenerator
類中添加了自定義類型java.util.Date
。 在querybuilder
如何將這些字符串與ge或le或gt或lt進行比較。 我保存字符串類型的分貝值和我比較像他們這樣Android的GreenDao - 如何比較兩個日期字符串?
qb.queryBuilder().where(TestDao.Properties.Date_entered.ge(start)).list();
它不工作。
如果您正在使用greenDao然後在MainGenerator你必須有這樣的qb.queryBuilder().where(TestDao.Properties.Date_entered.ge(start)).list();
開始日期爲
testdao.addDateProperty("date_entered").notNull();
應該java.util.Date。
日期被持久化爲long類型的時間戳。因此,對於您的查詢參數,您還應該使用長整型值。
你可以放下一個例子嗎? – user1810931
所以在這個查詢qb.queryBuilder()。其中(TestDao.Properties.Date_entered.ge(start)).list()開始應該是long值? – user1810931
您可以使用Date或Long(即。date.getTime())。他們都工作。這是[在文檔中解釋](http://greenrobot.org/greendao/documentation/queries/#Custom_Types_as_Parameters)。如果您好奇,請查看「WhereCondition」類的源代碼。 –
可以串日期轉換成毫秒,可以爲你的結果比較值:
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();
}
首先解析字符串中的日期作爲您在數據庫字符串格式保存日期。然後查詢數據。這裏是示例代碼。
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();
@ user1810931 waqas ali如果您輸入的日期是dateProperty,並且您執行此解決方案,您將得到此異常。非法的日期值:預期的java.util.Date或長期的價值.....所以我不認爲這是正確的答案 – Zartha
我想我已經在上面已經提到,如果您在字符串中保存日期此解決方案是有效的格式。您需要重新閱讀第一個答案。 –
start的樣本值是多少? – Zartha