2013-05-04 24 views
5

Tôi có thể tạo sự kiện theo thời gian bằng API Lịch Google v3 Java (theo mã mẫu trên trang web của Google), nhưng tôi cần tạo một sự kiện cả ngày.Cố gắng tạo sự kiện cả ngày bằng API Lịch Google phiên bản 3 cho Java gây ra lỗi

tôi gọi setStart của sự kiện() và setEnd(), ví dụ:

event.setStart(startEventDateTime); 
    event.setEnd(endEventDateTime); 

Những phương pháp này đòi hỏi và EventDateTime, tức là

EventDateTime startEventDateTime = new EventDateTime().setDateTime(startDateTime); 
    EventDateTime endEventDateTime = new EventDateTime().setDateTime(endDateTime); 

tôi sử dụng setDateTime() phương pháp như setDate() nguyên nhân lỗi 404.

setDateTime() đòi hỏi một đối tượng com.google.api.client.util.DateTime, bằng cách làm

DateTime startDateTime = new DateTime(startDate, TimeZone.getTimeZone("UTC")); 
    DateTime endDateTime = new DateTime(endDate, TimeZone.getTimeZone("UTC")); 

Đi qua trong TimeZone đưa ra một yếu tố thời gian vì vậy nó không phải là một sự kiện cả ngày.

Tôi đã thử đặt dateOnly true nhưng điều này mang lại một lỗi:

DateTime startDateTime = new DateTime(true, startDate.getTime(), 0); 

tôi không thể có được những cách khác của việc tạo ra DateTime làm việc: ngày ngày, khu TimeZone giá trị lâu ngày giá trị giá trị dài, Số nguyên tzShift Giá trị chuỗi

Cách nào để tạo DateTime và tôi có thể sử dụng setDate(), tức là EventDateTime mới(). setDate (...)?

Có ai có đoạn mã được kiểm tra không? Tại sao Google không được tài liệu này?

ps Điều thú vị là khi đọc các sự kiện từ Google, sử dụng getDate() gây ra một ngoại lệ với các sự kiện theo thời gian và getDateTime() là một ngoại lệ với các sự kiện cả ngày. Cần sử dụng hàm getDate() cho các sự kiện cả ngày và getDateTime() cho các sự kiện theo thời gian.

Trả lời

8

Đã sửa lỗi.

Để tạo sự kiện cả ngày, bạn phải sử dụng setDate() đã tạo đối tượng DateTime bằng cách sử dụng chuỗi (mà tôi đã tạo bằng cách định dạng đối tượng Ngày tháng). Mã:

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); 
Các vấn đề liên quan