[英]How to get the real time of recurring events?
我使用以下方法來獲取日歷的所有事件:
public Cursor getEventsCursor(Context context) {
long curr = System.currentTimeMillis();
long begin = curr - DateUtils.DAY_IN_MILLIS * 30; // - 30 days
long end = curr + DateUtils.DAY_IN_MILLIS * 30; // + 30 days
Cursor cur = null;
ContentResolver cr = context.getContentResolver();
String selection = Events.VISIBLE + "= ?";
String[] selectionArgs = new String[] {"1"};
String order = Events.DTSTART + " DESC";
Uri.Builder builder = Instances.CONTENT_URI.buildUpon();
ContentUris.appendId(builder, begin);
ContentUris.appendId(builder, end);
return cr.query(builder.build(), EVENT_PROJECTION,
selection, selectionArgs, order);
}
它有效,但我得到了所有重復活動的初始時間!
日志
Feeder milestone; eventId: 12; date=2012-12-06 11:00:00 // initial time
Feeder milestone; eventId: 23; date=2012-12-06 11:00:00
Feeder milestone; eventId: 178; date=2012-12-06 11:00:00
Feeder milestone; eventId: 180; date=2012-12-06 11:00:00
如何獲得重復活動的真實時間?
示例 :如果定期發生的事件Feeder milestone
是每周兩次的事件,我希望:
Feeder milestone; eventId: 12; date=2014-08-03 11:00:00
Feeder milestone; eventId: 23; date=2014-08-27 11:00:00
Feeder milestone; eventId: 178; date=2014-09-11 11:00:00
Feeder milestone; eventId: 180; date=2014-09-25 11:00:00
從日歷提供程序文檔中 ,有3個與Events
相關的內容,其中之一是Instances
。
事件:此表包含特定於事件的信息。 此表中的每一行都包含單個事件的信息 - 例如,事件標題,位置,開始時間,結束時間等。 該事件可以一次發生或可以多次重復發生。 與會者,提醒和擴展屬性存儲在單獨的表中。 它們每個都有一個EVENT_ID,它引用了Events表中的_ID。
實例:此表包含每次事件發生的開始和結束時間 。 此表中的每一行代表一個事件發生。 對於一次性事件,實例與事件的映射為1:1。 對於重復發生的事件,將自動生成多個行,這些行對應於該事件的多次出現。
(強調我的)
如果發生重復事件,則Events.DTSTART
指整個事件的開始時間。
另一方面, Instances.BEGIN
和Instances.END
指的是每次事件發生的開始和結束時間。
一般情況下,始終使用Instances.BEGIN
地獲取所有事件的開始時間(無論是否重復)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.