【问题标题】:Incorrect UTC time in Calendar File for MS OutlookMS Outlook 日历文件中的 UTC 时间不正确
【发布时间】:2020-06-04 19:17:09
【问题描述】:

在我的活动管理应用程序中,我创建了一个日历文件,该文件与注册确认电子邮件一起发送。该应用程序位于带有 C# 的 .NET 中。我使用以下代码来获取时间。

sdate = row1.StartTime.ToUniversalTime().ToString("yyyyMMddThhmmssZ"); edate = row1.EndTime.ToUniversalTime().ToString("yyyyMMddThhmmssZ"); ...

然后我将它添加到日历文件中

内容.Add("DTSTART:" + sdate); contents.Add("DTEND:" + edate);

但问题是,如果我的结束时间是当地时间下午 3:59,那么它会正确转换。但如果它在下午 4:00 结束,那么结束时间就会不正确。

有人可以指导我吗?

请在 Outlook 日历条目和日历文件数据的屏幕下方找到。

正确输出

输出不正确

【问题讨论】:

  • 我认为代码运行正常。您忘记了日期在不同时间更改。从您发布的消息来看,我猜您在 PST(太平洋标准时间 -8),UTC 日期将在下午 4:00 更改。
  • 我添加了更多信息。
  • 问题不在于发布的代码。问题在于第 1 行中的数据。您的所有代码都在从 row1 获取数据。将数据放入第一行的代码应该只获得一次时间。所以你应该做这样的事情:DateTime now = Date.Now。 StartTime = now, EndTime = now.AddHours(3);不是 StartTime = DateTime.Now; EndTime = DateTime.Now.AddHours(3);第二个代码调用 DateTime.Now 两次。
  • row1 正在从数据库中获取数据,首先,我得到了事件的开始时间,然后我得到了事件的结束时间。那么你是说我减去开始时间和结束时间,然后计算日历文件的结束时间?我会尝试你的建议并会更新
  • 数据库错误。不是你的显示方式。

标签: c# asp.net outlook utc


【解决方案1】:

我终于找到了解决办法。它是如此简单,以至于我错过了它令人失望。

只是为了帮助别人。转换为字符串时,我只需要在字符串格式中输入大写“H”。所以正确的代码是

sdate = row1.StartTime.ToUniversalTime().ToString("yyyyMMddTHHmmssZ");
edate = row1.EndTime.ToUniversalTime().ToString("yyyyMMddTHHmmssZ");

【讨论】:

    猜你喜欢
    • 2019-11-30
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多