2009-09-15 32 views
7

我想驗證一個C#字符串是否符合XML Schema dateTime格式。看看MSDN,它看起來像「o」,「s」或「u」標準格式的字符串都可以描述有效的日期時間,但我不能讓DateTime.ParseExact爲我工作。我在這裏做錯了什麼?使用DateTime.TryParseExact來驗證XML Schema dateTime合規性

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); 

以上都沒有工作。對不起,如果我的格式不好:第一次在這裏發佈問題。

回答

14

由於要測試數據是XML兼容的,你可以使用XmlConvert.ToDateTime方法:

DateTime dt = XmlConvert.ToDateTime(myDate); 

,這將拋出一個FormatException如果給定的字符串不正確的格式。

9

只需使用XmlConvert.ToDateTime(注意:XmlConvert.ToDateTime(string)被認爲是現在已經過時了,你應該使用XmlConvert.ToDateTime(string, XmlDateTimeSerializationMode)

但是,如果你堅持要用DateTime.ParseExact(並有很好的理由這樣做,但你應該使用DateTime.TryParseExact避免在失敗的情況下,異常拋出),可以使用以下格式的字符串:

string format = "yyyy-MM-ddTHH:mm:ss.fffzzz"; 

的括注在上面的段落可能會被繁瑣的解析(我有這樣做的習慣,抱歉)