将 ISO 8601 字符串转换为时区信息

问题描述 投票:0回答:2

我的客户端应用程序正在向我发送使用 ISO 8601 格式的日期字符串。我可以使用,

获取日期时间
DateTime.Parse(date, null, DateTimeStyles.RoundtripKind);

如何从 ISO 8601 格式创建 .NET DateTime

现在,我想从客户端发送的字符串中了解时区。例如,

2022-07-28T01:00:00+02:00
,这意味着客户端距 UTC 时间为 +2 小时。

c# datetime iso8601
2个回答
3
投票

请勿使用

DateTime
类型。它不知道偏移量。使用
DateTimeOffset
类型。

var dateTimeOffset = DateTimeOffset.Parse(date);

现在您可以在

Offset
属性中找到偏移量。


0
投票

我认为这个解析代码会对你有所帮助:

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.