Ars*_*ray 0 c# datetime parsing datetimeoffset
我有输入日期时间字符串,如下所示:2015-01-28 17:55:43.问题是它们处于UTC + 8(或其他一些转变).无论软件运行的时区如何,我都需要将这些字符串解析并正确处理为UTC.我的问题是DateTime.Parse返回本地时间,而不是UTC时间,并且在解析字符串时我没有看到指定shift的方法.我目前的解决方案看起来像这样:
add.LastUpdatedTime = new DateTime((DateTime.Parse(text) - new TimeSpan(0, 8, 0, 0)).Ticks,DateTimeKind.Utc);
这很丑陋,我不确定它在任何情况下都能很好地运作.
有没有更好的方法呢?
鉴于你有一个当地时间和一个偏移,我建议代表DateTimeOffset.所以:
DateTime localTime = DateTime.ParseExact(...);
DateTimeOffset offsetTime = new DateTimeOffset(localTime, offset);
Run Code Online (Sandbox Code Playgroud)
然后您仍然知道当地时间,但您可以在需要时获得UTC等效值.基本上它保留了您拥有的所有信息.
作为替代方案,您可以使用代表相同信息的Noda TimeOffsetDateTime.您将使用a LocalDateTimePattern将值解析为a LocalDateTime,然后使用该WithOffset方法转换为适当的值OffsetDateTime.
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |