如何解析日期时间字符串?
2014-01-17T09:59:24.000Z
我试过下面的代码,但它没有用。
DateTime.ParseExact("2014-01-17T09:59:24.000Z", "ddd MMM dd HH:mm:ss %zzzz yyyy", CultureInfo.InvariantCulture);
答案 0 :(得分:3)
将指定的日期和时间字符串表示形式转换为它 DateTime等效使用指定的格式和特定于文化 格式信息。 字符串表示的格式必须匹配 完全符合指定的格式。
显然你的字符串表示和格式是不一样的。
您可以像使用它一样使用
var date = DateTime.ParseExact("2014-01-17T09:59:24.000Z",
"yyyy-MM-dd'T'HH:mm:ss.fff'Z'",
CultureInfo.InvariantCulture);
Console.WriteLine(date);
输出将是;
1/17/2014 9:59:24 AM
这里有 demonstration
。
有关更多信息,请查看;
答案 1 :(得分:3)
使用类似“2014-01-17T09:59:24.000Z”的字符串
您可以使用DateTime.Parse("2014-01-17T09:59:24.000Z")
要解析的字符串可以采用以下任何一种形式:
包含时区信息并符合ISO 8601的字符串。在以下示例中,第一个字符串指定协调世界时(UTC),第二个字符串指定比UTC早7小时的时区中的时间:
2008-11-01T19:35:00.0000000Z
2008-11-01T19:35:00.0000000-07:00
答案 2 :(得分:0)
您拥有的值2014-01-17T09:59:24.000Z
是ISO8601 / RFC3339格式的时间戳。最后的Z
是重要的,这意味着它代表UTC。
正确解析它有两个选项:
您可以将其解析为DateTime
DateTimeKind.Utc
.Kind
属性{/ 1}}:
DateTime dt = DateTime.ParseExact("2014-01-17T09:59:24.000Z",
"yyyy-MM-dd'T'HH:mm:ss.fffK",
CultureInfo.InvariantCulture,
DateTimeStyles.RoundtripKind);
或者,您可以将其解析为DateTimeOffset
,其中UTC将对应于零偏移:
DateTimeOffset dt = DateTimeOffset.ParseExact("2014-01-17T09:59:24.000Z",
"yyyy-MM-dd'T'HH:mm:ss.fffK",
CultureInfo.InvariantCulture);
此处的其他一些答案很接近,但是忘记使用Z
说明符和K
参数实际考虑字符串中的DateTimeStyles.RoundtripKind
。这些非常重要,因为如果没有它们,您最终可能会得到DateTime
的结果DateTimeKind.Unspecified
,在某些时区转换函数中可能会被视为本地时间。如果您使用我给您的任一选项,则保留Z
的含义。