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

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

基本上,我想在两个人之间创建并共享一个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"),CultureInfo.invariantculture),DateTimeKind.Local)

我还使用DateTimeKind.UTC尝试了上述方法

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

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

编辑:

更多关于我正在尝试做的推理的背景。我正在开发一个处理面对面约会的SaaS调度应用程序,但是我们不知道具体的位置。我们解决此问题的方法是在UI和存储的值中,每个约会都采用UTC,因此他们会看到5pm,选择5pm,存储为5pm,最终应作为5pm的Google日历事件共享。如果用户在不同的时区,它将仍然显示下午5点(因为所有时间均为UTC),但是期望他们将在实际约会的预定位置的时区中。

我们正从发送.ics附件和用于Google日历的开始/结束符的相同代码切换到Google日历。

laosizhxy 回答:阻止Google Calendar API V3更改事件时间C#

Google日历

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

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

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

  

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

编辑

如果您要创建自己的日程安排应用程序,并希望在Google日历上显示这些事件,则可以embedded a Calendar在特定时区使用。

但是,如果您要与可能具有不同时区的多个用户打交道,那么考虑这一点很重要。您的应用程序设计在这方面存在缺陷,并且不支持这些用例。

您提到您正在出售一个调度SaaS应用程序,因此我将使用它来生成一个业务案例来证明我的想法:

  

想象一下,您有一个班级,其中有1位教授(在美国),1位学生(也在美国)和另外2位来自日本的学生。

     

教授将在当地时间下午1点安排课程。

     

由于该课程是在线课程,因此所有学生都需要在那时有空,无论他们所在的时区如何。

     

如果我想将活动添加到每个人的日历中,则不会在每个日历上都标记1PM。我将在用户的时区上标记等效时间。

本文链接:https://www.f2er.com/3080251.html

大家都在问