如何将时区偏移文本“ +01:00”转换为时间跨度

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

我有一个API,它将接受时区偏移量作为字符串。我需要将时区转换为TimeSpan,并将时区与我拥有的UTC数据一起添加。这是我正在尝试的。

private bool TryGetHrAndMinFromTimeZone(string timeZone, out TimeSpan result)
    {
        try
        {
            var isPositive = !timeZone.StartsWith("-");
            var hrAndMin = string.Concat(timeZone.Where(x => x != '-' && x != '+')).Split(':');
            var hr = int.Parse(hrAndMin[0]);
            var min = int.Parse(hrAndMin[1]);
            result = isPositive ? new TimeSpan(hr, min, 0) : new TimeSpan(-hr, -min, 0);
            return true;
        }
        catch (Exception)
        {
            throw new Exception(string.Format("Provided TimeZone '{0}' is Invalid ", timeZone));
        }
    }

还有其他更好的选择吗?

c# timezone timespan
1个回答
0
投票

您可以尝试

TimeSpan.TryParse("-07:00", out TimeSpan ts) 

有关更多信息,https://docs.microsoft.com/en-us/dotnet/standard/datetime/converting-between-time-zones#converting-datetimeoffset-values

© www.soinside.com 2019 - 2024. All rights reserved.