使用DateTime.TryParseExact验证XML Schema dateTime合规性

时间:2009-09-15 20:31:54

标签: c# datetime xsd

我正在尝试验证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);

以上工作都没有。对不起,如果我的格式不好:第一次在这里发帖提问。

2 个答案:

答案 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";

上述段落中的括号内容可能很难解析(我有这样做的习惯;对不起)。