android - 如何查询特定日期范围的android日历事件?

标签 android events calendar selection

我正在查询 android 中的事件表以获取事件。

String[] projection = new String[] { "calendar_id", "title", "description",
                    "dtstart", "dtend", "eventLocation" };

Cursor cursor = cr.query(Uri.parse("content://com.android.calendar/events"),
                    projection,
                    null,
                    null,
                    null);

这将返回所有事件。但现在我只希望在特定持续时间内发生事件,比如 4/03/2013 到 7/03/2013。如何使用 selectionselectionArgs[] ? 这个我试过了

String selection = "((dtstart <= ?) AND (dtend >= ?))";
String[] selectionArgs = new String[] {startString, endString};

但是它没有返回任何东西。我的疑问是 1. where 子句有效吗?因为,startDate和endDate都是先转成long(毫秒)再转成String存入表中。那么如何比较字符串的长值。 sqlite 中没有toNumber() 函数。 2. 如果我要传递 selectionArgs,那么 startStringendString 应该采用哪种格式?

最佳答案

startString & endString 应该以毫秒为单位传递。尝试使用:

Calendar c_start= Calendar.getInstance();
c_start.set(2013,2,4,0,0); //Note that months start from 0 (January)   
Calendar c_end= Calendar.getInstance();
c_end.set(2013,2,7,0,0); //Note that months start from 0 (January)

另外,我觉得你的逻辑是反的,日期范围应该是这样的:

String selection = "((dtstart >= "+c_start.getTimeInMillis()+") AND (dtend <= "+c_end.getTimeInMillis()+"))";

关于android - 如何查询特定日期范围的android日历事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15477859/

相关文章:

algorithm - 星期几计算的小问题(一个世纪的基本世界末日)

android - 移动设备垂直滚动不起作用 *Sprite Spin*

android 移动 html 开发

java - Android Studio 模拟器不工作

javascript - ASP.NET UpdatePanel 和 Javascript __dopostback

javascript - 为什么当我单击下一个或上一个时,完整日历 jquery 插件无法按预期工作?

html - 在 Rails 中创建类似背包的日历

Android加速度计和Android版本

javascript - 用回车键选择复选框

python - 将代码存储在列表或字典中?