为我的 google 日历电子邮件 link 获取正确的日期和秒数

Getting the correct date with seconds for my google calendar email link

我在生成的电子邮件中为我的 google 日历 link 获取正确的日期时间时遇到问题。

我正在生成这样的日期字符串。

FormattedDateTime = String.Format("{0:yyyyMMdd}T{0:HHmmss}Z%2F{1:yyyyMMdd}T{1:HHmmss}Z", newEvent.EventDateTime, newEvent.EventDateTimeEnd))

我最终得到了这样的字符串

20170829T180000Z%2F20170829T190000Z

月份、日期和年份看起来正确,但秒数似乎不对,当我点击电子邮件中的 link 时,它会打开 google 日历日期和时间off/not 正确吗?

例如。我使用日期和时间 8/29/2017 @ 11:00AM 到 12:00PM 8/29/2017 然后我生成一个看起来像这样的字符串

20170829T040000Z%2F20170829T050000Z

它在 google 日历中打开 8/28/2017 @ 9:00PM 到 10:00PM 8/28/2017

所以日期和时间都差了几个小时。

如果我使用这个 link 生成 8/29/2017 11:00AM 到 12:00PM 8/29/2017 的字符串,我得到这个

20170829T180000Z%2F20170829T190000Z

你可以看到秒数不同。但它会打开带有正确日期和时间的 google 日历。

那我做错了什么?我猜 google 日历应该使用它所在的任何时区,对吗?我需要在这里进行某种时间转换吗?

看起来 google 日历需要 UTC 时间。尝试

FormattedDateTime = String.Format("{0:yyyyMMdd}T{0:HHmmss}Z%2F{1:yyyyMMdd}T{1:HHmmss}Z", newEvent.EventDateTime.ToUniversalTime(), newEvent.EventDateTimeEnd.ToUniversalTime()))