java - 尝试使用适用于 Java 的 Google Calendar API v3 创建全天 Activity 会导致错误

标签 java google-calendar-api

我可以使用 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/

相关文章:

java - 调试eclipse单元测试代码 "Test class should have exactly one"和 "Workspace is closed"错误

java - 您可以将 system.in 、 system.out 和 system.err 重新映射到 Java 线程吗?

java - 无法使用 Java 创建带有日历 API 的 HangoutsMeet

push-notification - 观看 Google 日历推送通知时出现错误 "WEB_HOOK channel unavailable"

java - H2客户端无法连接到服务器

java - 在硬编码的服务器路径上上传文件 Servlet

java - 如何访问 Google Apps for Business 用户的日历空闲/忙碌信息?

push-notification - 使用 PHP 客户端为 Google Calendar API 设置推送通知

google-apps-script - 自定义菜单 onOpen 不显示

java - 如何通过类在java中获取常量