我从服务器获得了一个日期" MM / dd / yyy" form,然后我使用以下函数将其转换为毫秒:
public static long getSimpleDateToMillis(String simpleDate) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
Date date = formatter.parse(simpleDate);
return date.getTime();
}
然后我将结果作为int保存到数据库中。
现在我被困在对我来说似乎是死路一条。我无法通过搜索和我的库存知识找到一种方法,可以通过project_date列过滤我的cursorloader,该列在数据库中保存为整数。
我能用什么方式查询它会: 从项目表中选择所有行,其中project_date是今天和后退(昨天等等)。
我试过这个,但似乎真的不是答案。
String [] projection = new String []{};
String selection = "datetime("+ ProjectsEntry.COLUMN_PROJECT_DATE + "/1000, 'unixepoch') =? ";
String [] selectionArgs = new String[]{" date('now')"};
return new CursorLoader(this,
JobsContract.JobsEntry.CONTENT_URI,
projection,
selection,
selectionArgs,
null);
我还没有找到任何其他可以指向我的参考资料,所以我希望有人也许也会遇到这个问题。
答案 0 :(得分:0)
这就是我做类似的事情,但使用完整的时间戳,即长而不是int。
首先我有这个方法来获取TimeStamp,以获得今天午夜时间的日期/时间(1毫秒): -
/**
*
* @return 1 millsecond before midnight today
*/
private long getDateTimeOfAllofToday() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH,1); // tomorrow
cal.set(Calendar.MILLISECOND,0);
cal.set(Calendar.SECOND,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.HOUR_OF_DAY,0);
cal.add(Calendar.MILLISECOND,-1);
return cal.getTimeInMillis();
}
然后我创建相应的where子句,例如: -
filter = DBRulesTableConstants.RULES_ACTON_COL +
" <= " +
Long.toString(getDateTimeOfAllofToday());
这是通过rawQuery使用的,所以不完全是你想要的,但很容易将" <= "
更改为" <=?"
然后使用
String [] selectionArgs = new String[]{Long.toString(getDateTimeOfAllofToday())};
或修改后的版本以获取整数。