簡體   English   中英

如何獲得重復發生的事件的實時?

[英]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.BEGINInstances.END指的是每次事件發生的開始和結束時間。

一般情況下,始終使用Instances.BEGIN地獲取所有事件的開始時間(無論是否重復)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM