我正在尝试验证C#字符串是否符合XML Schema dateTime格式。看看MSDN,似乎“o”,“s”或“u”标准格式字符串都可以描述有效的dateTimes,但我无法让DateTime.ParseExact为我工作。我在这里做错了什么?
string myDate = "1999-05-31T13:20:00.000-04:00";
DateTime.ParseExact(myDate, "o", CultureInfo.InvariantCulture, DateTimeStyles.None);
DateTime.ParseExact(myDate, "s", CultureInfo.InvariantCulture, DateTimeStyles.None);
DateTime.ParseExact(myDate, "u", CultureInfo.InvariantCulture, DateTimeStyles.None);
以上工作都没有。对不起,如果我的格式不好:第一次在这里发帖提问。
答案 0 :(得分:14)
由于您要测试数据是否符合XML,您可以使用XmlConvert.ToDateTime
方法:
DateTime dt = XmlConvert.ToDateTime(myDate);
如果给定的字符串格式不正确,则会抛出FormatException
。
答案 1 :(得分:9)
只需使用XmlConvert.ToDateTime
(请注意XmlConvert.ToDateTime(string)
现在已被淘汰,您应该使用XmlConvert.ToDateTime(string, XmlDateTimeSerializationMode)
。
但是,如果你坚持使用DateTime.ParseExact
(并且有充分的理由这样做,但是你应该使用DateTime.TryParseExact
来避免在失败的情况下抛出异常)你可以使用以下格式字符串:
string format = "yyyy-MM-ddTHH:mm:ss.fffzzz";
上述段落中的括号内容可能很难解析(我有这样做的习惯;对不起)。