2013-05-04 12 views
5

Java v3 Google Takvim API'sını kullanarak zamanlanmış bir etkinlik oluşturabilirim (Google'ın web sitesindeki örnek kod uyarınca), ancak oluşturmam gerekiyor tüm gün süren bir etkinlik.Java için Google Calendar API v3 kullanarak tüm gün boyunca bir etkinlik oluşturmaya çalışmak bir hataya neden oluyor

Ben olayın setStart() ve yani

Bu yöntemler gerektiren
event.setStart(startEventDateTime); 
    event.setEnd(endEventDateTime); 

setEnd() ve yani

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

Ben SetDateTime (kullanın) setDate gibi yöntemlerle EventDateTime,() nedenleri çağrı 404 hatası.

SetDateTime() bir bütün gün olay değildir yani, zaman öğesi verir zaman dilimi içinde Geçme

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

yaparak, bir com.google.api.client.util.DateTime nesnesini gerektirir.

Ben true dateOnly ayarı denedim ama bu bir hata veriyor:

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

işe DateTime yaratmanın başka yollar alamayan: Tarih tarih, TimeZone bölge uzun değeri Tarihi değeri uzun değeri, Tamsayı tzShift dize değeri DateTime oluştururum ve ben setDate(), yani yeni EventDateTime() kullanabilir yolu

. setDate (...)?

Test edilen bir kod snippet'ini olan var mı? Bu neden Google tarafından belgelenmiyor? İlginçtir, Google'dan etkinlikler okurken getDate() işlevini kullanarak, zamanlanmış olayların ve getDateTime() öğesinin tüm günkü olaylarla bir istisna oluşturmasına neden olur. Tüm günler için getDate() yöntemini ve zamanlanmış etkinlikler için getDateTime() kullanmanız gerekir.

cevap

8

Düzeltildi.

Tüm gün boyunca bir etkinlik oluşturmak için, (Tarih nesnelerim biçimlendirerek oluşturduğum) bir String kullanarak DateTime nesnelerini oluşturan setDate() yöntemini kullanmanız gerekir. Kod:

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); 
İlgili konular