我尝试从包含时区信息的字符串中解析日期。输入字符串为2014-12-17T08:05:39+00:00
。
我使用DateTime.Parse()
方法返回2014-12-17 09:05:39
(已添加一小时)。我住在UTC+1:00 (Warsaw)
,因此.NET在当地时间采用这个日期。
我的问题是如何在跳过时区时使用解析方法,例如2014-12-17T08:05:39+00:00
我希望得到2014-12-17 08:05:39
。
答案 0 :(得分:3)
我建议将其解析为DateTimeOffset
而不是DateTime
。然后,您可以从中获取DateTime
,但它将“解析您已经获得的数据”步骤与“仅使用我想要的位”步骤分开。
有可能有方法DateTime.Parse
使用DateTimeStyles
按照您想要的方式运行 - 而且我很惊讶它无论如何都会自动转换为“本地”类型 - 但使用{{1}将使它更清楚。
(当然我确实建议使用Noda Time代替,解析为DateTimeOffset
,然后从中获取OffsetDateTime
,但这是一个不同的事情...)
答案 1 :(得分:1)
如果删除输入字符串中指定时区的部分,则它会直接解析,而不会调整为本地时间。然后date.Kind
为Unspecified
。
var input = "2014-12-17T08:05:39";
var date = DateTime.Parse(fixedInput);
虽然这很有效,但您也可以查看NodaTime。
答案 2 :(得分:0)
您应该尝试使用DateTimeOffset
代替DateTime
DateTimeOffset result = DateTimeOffset.Parse("2014-12-17T08:05:39+00:00", CultureInfo.InvariantCulture);
它会为您提供:12/17/2014 8:05:39 AM +00:00