如何在 C# 中将“2015-11-06T18:34:07+05:30”字符串转换为 UTC DateTime 对象

How do I convert "2015-11-06T18:34:07+05:30" string to UTC DateTime object in C#

我需要将来自服务器的“2015-11-06T18:34:07+05:30”时间戳转换为 C# 中的 DateTime 对象。然后我需要将此 DateTime 转换为 UTC,以便在同步期间进行比较 process.And 此时间戳中的时区可以 vary.So 我如何创建独立于时区的功能以从此时间戳字符串获取 UTC DateTime 对象。

DateTime dt = DateTime.Parse("2015-11-06T18:34:07+05:30",
               CultureInfo.InvariantCulture,
               DateTimeStyles.AdjustToUniversal);

或者:

DateTime dt = DateTime.ParseExact("2015-11-06T18:34:07+05:30",
                                  "yyyy-MM-dd'T'HH:mm:ssK",
                                  CultureInfo.InvariantCulture,
                                  DateTimeStyles.AdjustToUniversal);

或者:

DateTimeOffset dto = DateTimeOffset.Parse("2015-11-06T18:34:07+05:30",
                                          CultureInfo.InvariantCulture);
DateTime dt = dto.UtcDateTime;

或者:

DateTimeOffset dto = DateTimeOffset.ParseExact("2015-11-06T18:34:07+05:30",
                                               "yyyy-MM-dd'T'HH:mm:sszzz",
                                               CultureInfo.InvariantCulture);
DateTime dt = dto.UtcDateTime;

当然还有TryParseTryParseExact两种变体,如果需要验证的话。

就我个人而言,我建议将其保留为 DateTimeOffset 而不是返回到 DateTime

还有Noda Time:

OffsetDateTimePattern pattern = OffsetDateTimePattern.ExtendedIsoPattern;
OffsetDateTime odt = pattern.Parse("2015-11-06T18:34:07+05:30").Value;
DateTimeOffset dto = odt.ToDateTimeOffset();
DateTime dt = dto.UtcDateTime;