2014-01-30 162 views
1

我使用的是.NET的Google API(准确的说是VB.NET),它以我不明白的方式创建事件。如何在日历时区以外的时区创建活动?

我的日历是在东部时间,我试图创建一个事件,将在另一个时区的固定时间。具体而言,我想要在洛杉矶当地时间下午1:00发生的事件发生在

这是我的代码:

Dim dStart As New DateTime(2014, 1, 30, 13, 0, 0) 
Dim dEnd = dStart.AddHours(2) 

e.Start = New EventDateTime With {.DateTime = dStart, .TimeZone = "America/Los_Angeles"} 
e.End = New EventDateTime With {.DateTime = dEnd, .TimeZone = "America/Los_Angeles"} 

Dim ins As New InsertRequest(service, e, calendar.Id) 
ins.Execute() 

我想到这使得像这样的事件:

1/30/2014 @ 1:00PM (GMT-08:00) Pacific Time 

但是,相反,它创造了这个事件:

1/30/2014 @ 10:00AM (GMT-08:00) Pacific Time 

在其他单词,它知道使用太平洋时间,但它这样做减去 三个小时。为什么要这样做,以及如何在适当的时间创建一个活动?

回答

0

EventDateTime.DateTime总是当地时区所以,你必须设定日期的时区计算。在这种情况下是EventDateTime.TimeZone仅用于显示时间偏移 - 你的情况(GMT-8),但不会影响时间本身

Dim dStart As New DateTime(2014, 1, 30, 13 - myTimeZone + targetTimeZone, 0, 0) 

检查这个article,如何确定时差

+0

谢谢,这就是我要做的。所以你说时区除了说“太平洋时间”之外其实并没有用于其他任何事情?这看起来非常直观。 –

+0

我花了一些时间在[类似](http://daily-reservation.appspot.com/)问题上,而不是决定通过UTC(小时 - myTimeZone + targetTimeZone) – Laky

+0

这就是我要做的,谢谢。但它对我来说似乎仍然有点儿冷淡。 –