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

У меня возникла проблема при добавлении события в Календарь 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);

1 Ответ

0 голосов
/ 11 марта 2019

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

ссылка

Запись в события

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...