c# - 防止 Google Calendar API V3 更改事件时间 C#
问题描述
我真的遇到了一些时区问题,并且没有遇到其他类似问题。
基本上我想在两个人之间创建和共享一个谷歌日历事件,但我希望我为开始/结束提供的日期时间与他们中的任何一个人完全一致并且不转换。我在 UTC-5 中,当我测试事件时,我在过去 5 小时收到它们,即使我将时区设置为 UTC,从日期中删除“Z”,并将 DateTimeKind 设置为本地.. .
我尝试过的事情:
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 代码似乎无法按预期工作。
编辑:
关于我正在尝试做的事情的推理的更多背景。我正在开发一个处理面对面约会的 SaaS 调度应用程序,但我们不知道具体位置在哪里。我们解决这个问题的方法是,在 UI 和存储的值中,每个约会都是 UTC,所以他们看到下午 5 点,选择下午 5 点,存储为下午 5 点,最终应该作为下午 5 点的 Google 日历事件共享。如果用户在不同的时区,它仍然会显示下午 5 点(因为一切都是 UTC),但期望他们将在实际约会的预定位置的时区中。
我们正在从发送 .ics 附件和 Google 日历的开始/结束中断的相同代码切换到 Google 日历。
解决方案
谷歌日历
创建日历事件时,默认情况下会在当前时区创建它。
如果您希望多个用户同时拥有相同的事件,您只需要确保每个用户的日历设置都在正确的时区上。
如果您想在不属于您自己的另一个时区创建事件,您可以向 API 指定时区。
指定时间的时区。(格式化为 IANA 时区数据库名称,例如“Europe/Zurich”。)对于重复事件,此字段是必需的,并指定扩展重复发生的时区。对于单个事件,此字段是可选的,并指示事件开始/结束的自定义时区。
编辑
如果您正在创建自己的日程安排应用程序并希望在 Google 日历上显示这些事件,您可以嵌入具有特定时区的日历。
但是,如果您正在与可能具有不同时区的多个用户打交道,那么考虑这一点很重要。您的应用程序设计在这方面存在缺陷,不支持这些用例。
您提到您正在销售一个调度 SaaS 应用程序,所以我将使用它来生成一个商业案例来证明我的想法:
想象一下,您的班级有 1 位教授(在美国)、1 位学生(也在美国)和另外 2 位来自日本的学生。
教授将安排在当地时间下午 1 点上课。
由于课程是在线的,所有学生都需要在那个时候有空,无论他们的时区如何。
如果我想在每个人的日历中添加一个事件,我不会在每个日历上标记下午 1 点。我将在用户的时区标记等效时间。
推荐阅读
- javascript - 在同一个表中更新和删除
- javascript - React Native Expo 请求失败,状态码为 404
- r - 查找峰的最近邻对的索引
- c# - 使用模式解析字符串中的值
- linux - 带有 PHP 7.2 Pthreads 的 Centos 7 无法加载 redis.so
- angular - 初始化:
列排序 - sharepoint - 如何将文档从 SharePoint 2016 文档库移动到 SharePoint 2010 文档库?
- javascript - 在两个输入中显示/隐藏密码
- c# - 使用 Roslyn 生成代码时,如何在一行上获得自动属性?
- android - 删除 ListView 中的数据库项目(从 ArrayAdapter 创建)