如何在 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;
当然还有TryParse
和TryParseExact
两种变体,如果需要验证的话。
就我个人而言,我建议将其保留为 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;
我需要将来自服务器的“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;
当然还有TryParse
和TryParseExact
两种变体,如果需要验证的话。
就我个人而言,我建议将其保留为 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;