我在向 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);
最佳答案
这可能有帮助:
写入事件
如果 allDay 设置为 1,eventTimezone 必须是 Time.TIMEZONE_UTC 并且时间必须对应于午夜边界。
关于安卓 : 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/