我有一个生成 vCal 和 iCal 文件以将事件导入 Outlook 和 iCal 的页面。这些邮件客户端(Outlook 和 iCal)将采用 UTC 日期,因为它们知道用户的偏移量并会处理正确的时间。我们正在为其编写此代码的客户位于美国东部时区之外,我也是。他们的主机位于中部时区(比东部时区晚 1 小时)。我想让代码在没有任何硬编码偏移的情况下处理这个问题。我的代码目前从我们的 CMS 获取 DateTime 并转换为 Outlook/iCal 的 UTC。这意味着来自 CMS 的 DateTime 值是相对于托管位置的:
// Start Date Time
sb.AppendFormat("DTSTART:{0}\n", thisEvent.StartDate.ToUniversalTime().ToString("yyyyMMddTHHmmssZ"));
当我在本地运行它时,一切都很好,因为 CMS 中的 DateTime 基于我们客户的东部时区,我也是,所以过程是东部 -> UTC -> 进入 Outlook,然后进入 UTC -> 东部,一切都很好。当我部署到 Central 的服务器时,CMS 的 DateTime 比东部时间差一个小时。在转换为 UTC 之前,如何自动获取东部的偏移量并将其添加?我显然需要它来处理标准时间(EST)和日光时间(EDT)。我想在没有硬编码值的情况下以编程方式进行操作,因此无论您在哪个时区,它始终可以正常工作。即,如果我将此代码交付给在印度进行开发的某人,它应该自动处理他们本地服务器的偏移量和相应地调整。
我需要做这样的事情,在转换为 UTC 之前对东部时间应用偏移量:
sb.AppendFormat("DTSTART:{0}\n", thisEvent.StartDate.ApplyEasternOffset().ToUniversalTime().ToString("yyyyMMddTHHmmssZ"));
抱歉,如果这是以前讨论过的主题,我只是不确定找到此类问题的最佳术语。提前致谢。