【问题标题】:Google Calendar API: Event endTime is decremented by 1 dayGoogle Calendar API:事件结束时间减少 1 天
【发布时间】:2011-06-02 11:43:33
【问题描述】:

我正在尝试在我自己的 Java 类中使用 Google Calendar API。不幸的是,新创建的事件(在本例中为假期)的 endTime 似乎减少了 1 天。

示例:我使用 startTime 2011-01-01 和 endTime 2011-01-05 创建了一个活动,该活动将从 2011-01-01 到 2011-01-04 显示在 Google 日历中。

这是我目前得到的(只是日期部分,取自 Google Calendar API Developer's Guide,改为日期,因为我想要全天活动):

...
CalendarEventEntry myEntry = new CalendarEventEntry();

DateTime startTime = DateTime.parseDate("2011-01-01");  
DateTime endTime = DateTime.parseDate("2011-01-05");

When eventTimes = new When();
eventTimes.setStartTime(startTime);
eventTimes.setEndTime(endTime);
myEntry.addTime(eventTimes);

Reminder reminder = new Reminder();
reminder.setMethod(Method.NONE);
myEntry.getReminder().add(reminder);

CalendarEventEntry insertedEntry = myService.insert(postUrl, myEntry);
...

这可能与时区问题有关吗? (我来自德国)

【问题讨论】:

    标签: java datetime google-calendar-api


    【解决方案1】:

    如果您没有为DateTime.parseDate() 提供时间,则默认为午夜。从 1 日午夜开始到 5 日午夜结束的活动将在界面中显示为 1 日至 4 日的全天活动。时间段不包括任何时间on 5 号,因此不会显示为 5 号。

    您要么需要将结束时间设置为 2011 年 1 月 5 日 23:59,要么将结束日期添加一天。

    【讨论】:

    • 我能否在提供时间的同时仍保留全天活动,或者最好在将活动发送给 Google 之前增加一天?但是,有类似 DateTime.setDateOnly(true)
    • @Markus 00:00-23:59 的活动将是全天活动。
    • 但它们并没有真正标记为全天活动。但由于我在将一天添加到特定日期时遇到问题(例如使用日历),我将使用这个时间解决方法。
    • @Markus 虽然它显示为全天活动。使用 Joda 进行日期时间算术以增加 1 天。
    猜你喜欢
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    相关资源
    最近更新 更多