我正试图在上午9点在日历上设置每周一次的提醒。以下是代码
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,以知道结果是什么,但它们是正确的。
发布于 2022-03-03 14:17:12
所以问题出现在最后一行,尽管我已经明确声明了时区,但它设置的不正确。
所以而不是
newEvent.put(CalendarContract.Events.EVENT_TIMEZONE, "GMT-05:30");它应该是
newEvent.put(CalendarContract.Events.EVENT_TIMEZONE, String.valueOf(TimeZone.getTimeZone("UTC")));仍然不知道为什么它在上午11点及以上的时候起作用。有点奇怪
https://stackoverflow.com/questions/71251816
复制相似问题