java - 从 Google 日历获取事件时出现无效日期/时间异常

标签 java google-calendar-api

您好,我正在根据日期时间检索事件。当我传递日期时间作为从 Google 日历获取事件的查询时,出现异常。

 private static void dateRangeQuery(CalendarService service) throws ServiceException,
              IOException {
          DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-HH:mm");
           //get current date time with Date()
           Date date = new Date();
           System.out.println(dateFormat.format(date));

           //get current date time with Calendar()
           Date dt = Calendar.getInstance().getTime();
           //System.out.println(dateFormat.format(cal.getTime()));
          // System.out.println(cal.getTime());
          DateTime startTime =  DateTime.parseDateTime(dateFormat.format(dt));
          Calendar cal2 = Calendar.getInstance();
          cal2.add(Calendar.MINUTE, 20);
           System.out.println(dateFormat.format(cal2.getTime()));
           System.out.println(cal2.getTime());
          DateTime endTime =  DateTime.parseDate(dateFormat.format(cal2.getTime()));

            CalendarQuery myQuery = new CalendarQuery(eventFeedUrl);
            myQuery.setMinimumStartTime(startTime);
            myQuery.setMaximumStartTime(endTime);

            // Send the request and receive the response:
            CalendarEventFeed resultFeed = service.query(myQuery,
                CalendarEventFeed.class);

            //System.out.println("Events from " + startTime.toString() + " to "
            //    + endTime.toString() + ":");
            System.out.println();
            for (int i = 0; i < resultFeed.getEntries().size(); i++) {
              CalendarEventEntry entry = resultFeed.getEntries().get(i);
              System.out.println("\t" + entry.getTitle().getPlainText());
            }
            System.out.println();
          }

下面的异常:

Exception in thread "main" java.lang.NumberFormatException: Invalid date/time format.
    at com.google.gdata.data.DateTime.parseDateTime(DateTime.java:303)
    at GoogleCalender.dateRangeQuery(GoogleCalender.java:185)
    at GoogleCalender.main(GoogleCalender.java:115)

请任何人建议如何解决此问题

最佳答案

DateTime.parseDateTime() 所期望的 XML 日期时间模式为 [-]CCYY-MM-DDThh:mm:ss[Z|(+|-)hh:mm ]

因此,应使用 SimpleDateFormat yyyy-MM-dd'T'HH:mm:ss 模式对日期进行格式化(未测试)。

但更简单的方法是简单地使用 DateTime 构造函数,该构造函数采用 java.util.Date 作为参数,而不是将 Date 转换为字符串,然后将日期转换为日期时间。

关于java - 从 Google 日历获取事件时出现无效日期/时间异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15630219/

相关文章:

java - "\n","\t"如何分别加新行和制表符?

java - import 语句是否会增加类的大小

python - 如何通过 python 使用 Google 日历 API

angular - 带有 Angular 提交功能的 Google 日历 API

javascript - 将 Google 表格中的日期和时间列合并为 createEvent() 函数

node.js - 使用 google calendar API oauth2 服务帐户(node.js)模拟用户

java - 使用嵌套 for 循环创建带星号的三角形

java - 2D 游戏设计 - y 变量未解决?

Java Scanner - While 循环不继续

PHP Google Calendar API - 更新事件