我正在使用「Google.GData.Calendar」API將事件添加到使用c#的Google日曆中。但是在我的數據庫和Google日曆中創建的事件之間存在時間差異。使用C#添加Google日曆事件時存在時差問題
以下是代碼使用Google.GData API的事件添加到谷歌日曆:
public static void AddEventToGoogle()
{
//string timezone = "US Mountain Standard Time";
Uri postUri = new Uri("https://www.google.com/calendar/feeds/default/private/full");
try
{
GOAuthRequestFactory authFactory = new GOAuthRequestFactory("cl", "MyApp");
authFactory.ConsumerKey = ConfigurationManager.AppSettings["GConsumerKey"].ToString();
authFactory.ConsumerSecret = ConfigurationManager.AppSettings["GConsumerKeySecret"].ToString();
authFactory.Token = "xxxxxxxxxx";
authFactory.TokenSecret = "xxxxxx";
Google.GData.Calendar.CalendarService service = new Google.GData.Calendar.CalendarService(authFactory.ApplicationName);
service.RequestFactory = authFactory;
EventEntry entry = new EventEntry();
entry.Title.Text = "Test Google Event Create";
entry.Content.Content = "Test Google Event Create";
entry.Notifications = false;
When eventTime = new When();
eventTime.AllDay = false;
eventTime.StartTime = new DateTime(2013, 5, 9, 8, 0, 0);
eventTime.EndTime = new DateTime(2013, 5, 9, 11, 0, 0);
entry.Times.Add(eventTime);
// Send the request and receive the response:
EventEntry insertedEntry = service.Insert(postUri, entry);
if (insertedEntry != null && !string.IsNullOrEmpty(insertedEntry.EventId))
{
//Get the insertedEntry.EventId
}
}
catch (GDataRequestException gre)
{
HttpWebResponse response = (HttpWebResponse)gre.Response;
}
}
但與上面的代碼有一個與事件的時間差我打算創建,並在入境Google日曆。我在Google日曆中的時區是「(GMT-07:00)Mountain Time - Arizona」。當我將Google日曆的時區更改爲CST,PST時,發生這種情況...
請爲這種情況建議一種解決方法,或者在向Google日曆添加事件時需要指定時區。
更新我有我用來添加事件
你可以發佈你的數據,因爲它發佈到API?我不認爲這是你使用的語言引起的問題。而是日期的格式。從文檔:「時間,作爲組合的日期時間值(根據RFC 3339格式化)。除非時區在'timeZone'中明確指定,否則需要時區偏移。」 – bvstone 2013-05-08 15:12:11
bvstone,請檢查我更新的問題與示例 – Prasad 2013-05-09 05:57:20