我真的遇到了一些时区问题,还没有碰到其他类似的问题。
基本上,我想在两个人之间创建并共享一个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日历。