2013-05-04 4 views
5

Java v3 GoogleカレンダーAPI(Googleのウェブサイトのサンプルコード)を使用してタイムドイベントを作成できますが、終日のイベント。Google Calendar API v3 for Javaを使用して終日イベントを作成しようとするとエラーが発生する

私はイベントのsetStart(呼び出し

)とSETEND()私はSETDATE()の原因としてsetDateTime()メソッドを使用し

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

を、すなわち

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

これらのメソッドは、必要とEventDateTime、すなわち

404エラー。

setDateTimeは()タイムゾーンを渡す

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

を行うことによって、com.google.api.client.util.DateTimeオブジェクトを必要とし、それはすべての日のイベントではありませんので、時間要素を提供します。

私がtrueにdateOnlyを設定しようとしましたが、これはエラーを与える:

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

私は仕事に日時を作成する他の方法を取得することはできません:日付、タイムゾーンのゾーン 長い値 日 日値 long値、整数tzShift 文字列値

DateTimeはどのように作成すればよく、setDate()、つまり新しいEventDateTime()、setDate(...)を使用できますか?

誰かがテスト済みのコードスニペットを持っていますか?なぜこれはGoogleによって文書化されていないのですか?

ps興味深いことに、Googleからイベントを読み取っているときにgetDate()を使用すると、タイムドイベントの例外が発生し、getDateTime()は終日のイベントの例外になります。終日イベントの場合はgetDate()を使用し、時間指定イベントの場合はgetDateTime()を使用する必要があります。

答えて

8

修正済み。

終日のイベントを作成するには、Dateオブジェクトをフォーマットして作成したStringを使用してDateTimeオブジェクトを作成したsetDate()を使用する必要があります。コード:

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); 
関連する問題