在我的Android应用程序中,我有一个数据库,该数据库将日期存储为System.currentTimeInMilis中的长值。我现在想使用CursorLoader查询特定的日子。这是我尝试过的:
DateFormat sameDayCheckerformatter = new SimpleDateFormat("dd-MM-yyyy");
String selection = sameDayCheckerformatter.format(ItemEntry.COLUMN_DAY) + "=" + sameDayCheckerformatter.format(dayInMilis);
return new CursorLoader(getActivity(),
ItemContract.ItemEntry.CONTENT_URI_ITEMS,
projection,
selection,
null,
null);
这不符合我的预期:
java.lang.IllegalArgumentException:无法将给定对象格式化为日期
但是我找不到解决方案。我该如何解决?
答案 0 :(得分:1)
为什么将格式应用于ItemEntry.COLUMN_DAY
?
看起来像String
代表列名。
另外,您还需要在格式日期前后加上引号。
更改为此:
String selection = ItemEntry.COLUMN_DAY + " = '" + sameDayCheckerformatter.format(dayInMilis) + "'";
修改:
如果列ItemEntry.COLUMN_DAY
具有整数值,则根本不需要格式化:
String selection = ItemEntry.COLUMN_DAY + " = " + dayInMilis;
编辑2 :您需要strftime()
功能:
String selection =
"strftime('%d-%m-%Y', " + ItemEntry.COLUMN_DAY + " / 1000, 'unixepoch') = '" +
sameDayCheckerformatter.format(dayInMilis) + "'";