事件没有在谷歌日历中添加正确的时间



我创建了一个ASP.net应用程序,我正在使用谷歌日历API (Google. gdata .Calendar)来计划/添加谷歌日历中的事件。

仅供参考,我的客户来自南澳大利亚,我的网站托管在Godaddy印度服务器上。

在澳大利亚从10月到4月是夏令时。南澳大利亚(SA): 10月的第一个星期日4月的第一个星期日早于1917年和1942-1944年实行夏时制。)

这是我面临的问题:

当我从印度站点添加事件时,事件会在同一时间添加,即使在夏令时也没有任何变化。但是当我的客户从南澳大利亚加入一个活动时,活动提前了一个小时。例:如果事件时间是10AM-11AM,那么它将是9AM-10AM。

有时事件添加正确的时间从南澳大利亚使用iPad/Tab/其他一些电脑。

下面是我的事件代码:

var startHour = new DateTime(dtstartdatetime.Year, dtstartdatetime.Month, dtstartdatetime.Day, startTime.Hours, startTime.Minutes, 00).ToUniversalTime().AddHours(-7);
var startHour1 = new DateTime(dtstartdatetime.Year, dtstartdatetime.Month, dtstartdatetime.Day, endTime.Hours, endTime.Minutes, 00).ToUniversalTime().AddHours(-7);

澳大利亚有6个时区,我们正在据此调整活动的开始和结束时间。

请告诉我哪里需要修改

几点:

  • 你正在描述谷歌日历,但你显示的代码只是纯粹的DateTime操作。要么更新显示Google日历细节的代码,要么减少你的问题以匹配你正在显示的代码。

  • GData使用Google Calendar API的v2版本,该API已被弃用。你应该使用当前的v3。

  • 你正在用Unspecified.Kind构建DateTime。当您调用ToUniversalTime时,它将把开始时间视为本地时间。所以服务器的时区会潜入到你的计算中。

  • 你似乎知道6个时区和夏令时规则,但你只是添加了一个硬编码的-7小时。这不是确定时区或调整时区的正确方法。去阅读TimeZoneInfoDateTimeOffset

  • 您可以考虑使用Noda时间-这可能会有所帮助,因为谷歌日历使用IANA时区标识符。

相关内容

  • 没有找到相关文章

最新更新