Android: отображение неверной даты окончания (за день до фактической даты) в Календаре Google при добавлении события с намерением

1

У меня возникла проблема при добавлении события в Календарь Google, так как в нем отображается неверная дата окончания на экране Календаря Google. Но если вы добавите событие, оно сгенерирует событие с правильной датой окончания. Не уверен, почему он показывает за 1 день до даты окончания.

Например, если конечная дата 31 августа, она будет отображаться на экране предварительного просмотра календаря как 30 августа, но событие генерируется только 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);
Теги:
calendar
android-calendar
google-calendar-api

1 ответ

0

Это может помочь:

ссылка

Запись на мероприятия

Если для allDay установлено значение 1, eventTimezone должен иметь значение Time.TIMEZONE_UTC, а время должно соответствовать границе полуночи.

Переполнение стека

  • 0
    Не работает для меня Получая тот же вывод.
  • 0
    Для меня событие allDay установлено в True. И попробовал это ниже. calEndDate.setTimeZone (TimeZone.getTimeZone (Time.TIMEZONE_UTC));
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню