我的客户端应用程序正在向我发送使用 ISO 8601 格式的日期字符串。我可以使用,
获取日期时间DateTime.Parse(date, null, DateTimeStyles.RoundtripKind);
如何从 ISO 8601 格式创建 .NET DateTime
现在,我想从客户端发送的字符串中了解时区。例如,
2022-07-28T01:00:00+02:00
,这意味着客户端距 UTC 时间为 +2 小时。
请勿使用
DateTime
类型。它不知道偏移量。使用 DateTimeOffset
类型。
var dateTimeOffset = DateTimeOffset.Parse(date);
现在您可以在
Offset
属性中找到偏移量。
我认为这个解析代码会对你有所帮助:
public static DateTime ParseDateISO8601(string strdate)
{
DateTimeOffset value = DateTimeOffset.ParseExact(strdate, "yyyy-MM-dd'T'HH:mm:ss.fff'Z'", CultureInfo.InvariantCulture);
DateTime localDate = TimeZoneInfo.ConvertTimeFromUtc(value.DateTime, TimeZoneInfo.Local);
return localDate;
}