防止Google Calendar API V3更改事件时间C#

问题描述 投票:0回答:1

我确实遇到了一些时区问题,还没有碰到其他类似的问题。

基本上,我想在两个人之间创建并共享一个Google日历事件,但是我希望为Start / End提供的DateTime完全与不为两个人转换。我使用的是UTC-5,当我测试事件时,即使过去将时区设置为UTC,从日期中删除“ Z”,并将DateTimeKind设置为local,我仍会在过去5个小时收到事件。 。

我尝试过的事情:

DateTimeRaw = DateTime.ParseExact(appointment.Start.ToString("MM/dd/yyyy HH:mm"), "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture).ToString("yyyy-MM-ddTHH:mm:ss").Replace("Z", "")

然后是上面的内容,但已将.ToUniversalTime()添加到约会中

DateTime = new DateTime(appointment.Start.Year, appointment.Start.Month, ....)

还有...

DateTime.SpecifyKind(DateTime.ParseExact(appointment.Start.ToString("MM/dd/yyyy HH:mm"), "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture), DateTimeKind.Local)

我也用DateTimeKind.UTC尝试了以上方法

我基本上一直在尝试大量的组合,然后决定停止,因为我真的不知道为什么它不起作用...

是否可以为Google日历中的所有用户保留完全相同的时间?在此之前,我已经使用ICAL.NET库并创建了自己的.ics事件,并且它运行良好,但是用于GCal的相同DateTime代码似乎无法按预期工作。

c# datetime timezone google-calendar-api
1个回答
0
投票

创建日历事件时,默认情况下会在当前时区创建它。

如果您希望多个用户同时具有相同的事件,则只需确保每个用户has their calendar settings on the correct timezone

如果您想在非您自己的其他时区创建事件,则可以specify the timezone to the API

指定时间的时区。 (格式为IANA时区数据库名称,例如“欧洲/苏黎世”。)对于重复发生的事件,此字段为必填字段,用于指定重复发生时间所在的时区。对于单个事件,此字段是可选的,指示事件开始/结束的自定义时区。

© www.soinside.com 2019 - 2024. All rights reserved.