[英]Update Event to google calendar using oauth2 and calendar Api v3 Java
[英]Trying to create an all-day event using Google Calendar API v3 for Java causes an error
我可以使用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的其他方法:日期日期,TimeZone区域长值日期值长值,整数tzShift字符串值
我以哪种方式创建DateTime,我可以使用setDate(),即新的EventDateTime()。setDate(...)?
有没有人有经过测试的代码片段? 为什么Google没有记录这一点?
ps有趣的是,当从Google读取事件时,使用getDate()会导致定时事件发生异常,而getDateTime()会导致全天事件发生异常。 需要对全天事件使用getDate(),对定时事件使用getDateTime()。
固定。
要创建全天事件,必须使用setDate()创建DateTime对象,使用String(我通过格式化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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.