首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android中的RRULE

android中的RRULE
EN

Stack Overflow用户
提问于 2022-02-24 12:15:47
回答 1查看 177关注 0票数 0

我正试图在上午9点在日历上设置每周一次的提醒。以下是代码

代码语言:javascript
复制
final int[] preTimings = {9, 12, 18};

Calendar calendar = Calendar.getInstance(Locale.getDefault());
ContentValues newEvent = new ContentValues();

int month = calendar.get(Calendar.MONTH);
int date = calendar.get(Calendar.DATE);

calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.DATE, date);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);

for(int i = 0; i < preTimings.length; i++{
    calendar.set(Calendar.HOUR_OF_DAY, preTimings[i]);
    long timeInMillis = calendar.getTimeInMillis();

    newEvent.put(CalendarContract.Events.CALENDAR_ID, 1);
    newEvent.put(CalendarContract.Events.TITLE, preTitle[i]);
    newEvent.put(CalendarContract.Events.DTSTART, timeInMillis);                   
    newEvent.put(CalendarContract.Events.DTEND, timeInMillis + 60000);
    newEvent.put(CalendarContract.Events.RRULE, "FREQ=WEEKLY;BYDAY=MO");
    newEvent.put(CalendarContract.Events.HAS_ALARM, true);
    newEvent.put(CalendarContract.Events.EVENT_TIMEZONE, "GMT-05:30");

所以这个程序每周星期一的下午12点和下午6点都是正确的,但是出于某种原因,它是每周星期二上午9点。我不知道这是怎么回事。我甚至尝试在在线计算器中转换timeInMillis,以知道结果是什么,但它们是正确的。

EN

回答 1

Stack Overflow用户

发布于 2022-03-03 14:17:12

所以问题出现在最后一行,尽管我已经明确声明了时区,但它设置的不正确。

所以而不是

代码语言:javascript
复制
newEvent.put(CalendarContract.Events.EVENT_TIMEZONE, "GMT-05:30");

它应该是

代码语言:javascript
复制
newEvent.put(CalendarContract.Events.EVENT_TIMEZONE, String.valueOf(TimeZone.getTimeZone("UTC")));

仍然不知道为什么它在上午11点及以上的时候起作用。有点奇怪

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71251816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档