2

Java API (jar バージョン v3-rev9-1.7.0-beta) を使用して、Google カレンダーからイベントのリストを取得しようとしています。

このコードは正常に動作します

Events e = service.events().list("primary").
                setMaxResults(3).
                execute(); 

service は Calendar オブジェクトです。

ただし、このように setTimeMin または setTimeMax パラメータを追加すると、

Date now = new java.util.Date();
Events e = service.events().list("primary").
                setTimeMin(new DateTime(now)).
                setMaxResults(3).
                execute(); 

失敗メッセージ「Bad Request」を返します。

(このバージョンの時点で、setTime 関数は Google DateTime オブジェクトを取ることに注意してください。文字列を取る以前のバージョンの jar でも試してみましたが、同じメッセージを受け取りました)。

だから、誰かがこれらの関数をうまく使っているかどうか疑問に思っていました-おそらく、この方法で呼び出されることは想定されていませんか? エラーの詳細を取得する方法はありますか?

ありがとう :)

4

2 に答える 2

5
DateTime startTime = new DateTime(new Date(), TimeZone.getDefault());

問題を並べ替えます

于 2012-09-10T10:48:28.110 に答える
3

私もこれに遭遇しました。setTimeMin() への入力として、DateTime.toString() または DateTime.toStringRfc3339() メソッドの形式が正しくないようです。

DateTime.toString() の形式は次のとおりです:
2012-07-04T21:02:16.590
yyyy-MM-dd'T'HH:mm:ss.SSS (SimpleDateFormat 表記)

期待される形式はxsd:datetime形式 (それが何であれ)に近いようです:
2012-07-04T21:02:16Z (zulu, gmt)
2012-07-04T21:02:16-07:00 (mst, -7h)
2012-07-04T21:02:16-0700 (タイムゾーンにコロンがなくても機能します)
yyyy-MM-dd'T'HH:mm:ssZ (SimpleDateFormat)

フォーマットは SimpleDateFormat で行うことができます:

SimpleDateFormat FMT_TIME=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
String fromTimeStr=FMT_TIME.format(new Date());
Events evts = client.events().list(cal.getUid()).setTimeMin(fromTimeStr)
             .execute();

現在、私は古い API を使用しているため、唯一のメソッドが setTimeMin(DateTime) である場合にこれがどのように行われるかはわかりませんが、これはあなたを近づけるはずです。

Google のドキュメントまたはソースでは、これについてどこかに言及する必要があります。

于 2012-07-04T21:46:31.310 に答える