安卓 : Showing wrong end date (one day before of actual date) in Google Calendar while adding an event with intent

标签 android calendar google-calendar-api android-calendar

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

例如,如果结束日期是 8 月 31 日,它将在日历预览屏幕上显示为 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);

最佳答案

这可能有帮助:

reference

写入事件

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

Stack overflow

关于安卓 : Showing wrong end date (one day before of actual date) in Google Calendar while adding an event with intent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55103662/

相关文章:

javascript - React Native 中的 list 合并失败

php - 如何按天对数据库表数据进行分组并使用html表创建日历?

javascript - 使用 Javascript 查找本月的第二个和第四个星期二

calendar - Javascript 库创建日历 uri/链接到 Google、Yahoo、Outlook、iCal?

c# - .net 谷歌日历 API : anybody can create/update/delete events

javascript - Google Calendar API 在尝试获取我的所有日​​历事件时返回 404

android - 在模拟器上运行的命令而不是在 Android 手机上运行

android - 关闭 getContentResolver 游标

PHP 日历从星期一开始一周(偏移量)

Android Studio 2错误:Configuration with name 'default' not found