2012-06-21 83 views
2

我正在嘗試從谷歌日曆事件的列表,使用Java API(JAR版本V3-rev9-1.7.0-β)谷歌日曆API - setTimeMax導致錯誤

此代碼工作正常

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(); 

返回了失敗消息, 「錯誤的請求」。 (注意,就這個版本而言,setTime函數需要一個google DateTime對象,我也嘗試過使用舊版本的jar,它接受一個字符串,但收到相同的消息)。

所以我只是想知道如果有人已經成功地使用這些功能 - 也許他們不應該以這種方式被稱爲?有沒有辦法獲得有關錯誤的更多細節?

謝謝:)

回答

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

排序問題

+0

我們知道爲什麼這種方式可行,而不是原來的?我有一個日曆對象轉換相同的錯誤。 – Skepi

3

我也遇到過這個。看來DateTime.toString()或DateTime.toStringRfc3339()方法的格式不正確,因爲它是setTimeMin()的輸入。

的則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這將完成(日期時間),但這應該讓你更接近。

Google文檔或源代碼應在某處提及此處。

+0

文檔沒有幫助。谷歌似乎已經將它編碼爲setTimeMin(DateTime timeMin)和setTimeMax(DateTime timeMax),但文檔說setTimeMin(String timeMin)和setTimeMax(String timeMax) – Skepi