Android:在添加具有意图的事件时,在Google日历中显示错误的结束日期(实际日期的前一天)

问题描述 投票:1回答:1

我在向Google日历添加活动时遇到问题,因为它在Google日历屏幕中显示错误的结束日期但是如果您添加活动,则会生成具有正确结束日期的活动。不确定为什么它在结束日期前1天显示。

例如,如果结束日期是31日至8月,它将在日历预览屏幕上显示为8月30日,但事件仅生成于8月31日。

List<String> dateFormats = Arrays.asList(CALENDER_EVENT_DATE_FORMAT_1,
                CALENDER_EVENT_DATE_FORMAT_2);

        Calendar calStartDate = Calendar.getInstance();
        Calendar calEndDate = Calendar.getInstance();
        Date eventStartDate = null;
        Date eventEndDate = null;
        for (String format : dateFormats) {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            try {
                eventStartDate = sdf.parse(startDate);
                eventEndDate = sdf.parse(endDate);
            } catch (ParseException e) {

            }
        }

        Intent intent = new Intent(Intent.ACTION_EDIT);
        intent.setType(CALENDER_EVENT_TYPE);
        intent.putExtra(CALENDER_EVENT_TITLE, title);
        intent.putExtra(CALENDER_EVENT_DESC, note);
        intent.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, isAllDay);

        calStartDate.set(Calendar.HOUR_OF_DAY, 0);            // set hour to midnight
        calStartDate.set(Calendar.MINUTE, 0);                 // set minute in hour
        calStartDate.set(Calendar.SECOND, 0);                 // set second in minute
        calStartDate.set(Calendar.MILLISECOND, 0);            // set millisecond in second
        calStartDate.setTime(eventStartDate);

        calEndDate.set(Calendar.HOUR_OF_DAY, 0);            // set hour to midnight
        calEndDate.set(Calendar.MINUTE, 0);                 // set minute in hour
        calEndDate.set(Calendar.SECOND, 0);                 // set second in minute
        calEndDate.set(Calendar.MILLISECOND, 0);            // set millisecond in second
        calEndDate.setTime(eventEndDate);

        intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,
                calStartDate.getTimeInMillis());
        intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME,
                calEndDate.getTimeInMillis());

        weakActivity.get().startActivity(intent);
android calendar google-calendar-api android-calendar
1个回答
0
投票

这可能有所帮助:

reference

写入事件

如果allDay设置为1,则eventTimezone必须为Time.TIMEZONE_UTC且时间必须对应于午夜边界。

Stack overflow

© www.soinside.com 2019 - 2024. All rights reserved.