我可以使用 Java v3 Google Calendar API(根据 Google 网站上的示例代码)创建一个定时事件,但我需要创建一个全天事件。
我调用事件的 setStart() 和 setEnd(),即
event.setStart(startEventDateTime);
event.setEnd(endEventDateTime);
这些方法需要和EventDateTime,即
EventDateTime startEventDateTime = new EventDateTime().setDateTime(startDateTime);
EventDateTime endEventDateTime = new EventDateTime().setDateTime(endDateTime);
我使用 setDateTime() 方法,因为 setDate() 会导致 404 错误。
setDateTime() 需要一个 com.google.api.client.util.DateTime 对象,方法是
DateTime startDateTime = new DateTime(startDate, TimeZone.getTimeZone("UTC"));
DateTime endDateTime = new DateTime(endDate, TimeZone.getTimeZone("UTC"));
传入 TimeZone 会提供一个时间元素,因此它不是全天事件。
我试过将 dateOnly 设置为 true 但这会出错:
DateTime startDateTime = new DateTime(true, startDate.getTime(), 0);
我无法使用其他创建 DateTime 的方法: Date日期、TimeZone时区 长值 日期值 长值,整数 tzShift 字符串值
我用什么方法创建 DateTime,我可以使用 setDate(),即 new EventDateTime().setDate(...)?
有人有经过测试的代码片段吗?为什么 Google 没有对此进行记录?
ps 有趣的是,当从 Google 读取事件时,使用 getDate() 会导致定时事件异常,而 getDateTime() 会导致全天事件异常。需要对全天事件使用 getDate(),对定时事件使用 getDateTime()。
最佳答案
已修复。
要创建全天事件,您必须使用 setDate() 并使用字符串创建 DateTime 对象(我通过格式化 Date 对象创建的)。代码:
Date startDate = new Date(); // Or a date from the database
Date endDate = new Date(startDate.getTime() + 86400000); // An all-day event is 1 day (or 86400000 ms) long
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String startDateStr = dateFormat.format(startDate);
String endDateStr = dateFormat.format(endDate);
// Out of the 6 methods for creating a DateTime object with no time element, only the String version works
DateTime startDateTime = new DateTime(startDateStr);
DateTime endDateTime = new DateTime(endDateStr);
// Must use the setDate() method for an all-day event (setDateTime() is used for timed events)
EventDateTime startEventDateTime = new EventDateTime().setDate(startDateTime);
EventDateTime endEventDateTime = new EventDateTime().setDate(endDateTime);
event.setStart(startEventDateTime);
event.setEnd(endEventDateTime);
关于java - 尝试使用适用于 Java 的 Google Calendar API v3 创建全天 Activity 会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16372033/