The documentation on yyy format表示它是3位數字或更多。那麼爲什麼下面的代碼會拋出異常?爲什麼DateTime.ParseExact以「dd.Mm.yyy」格式和4位數年份的日期引發異常?
string format = "dd.MM.yyy";
string s = DateTime.Now.ToString(format, CultureInfo.InvariantCulture);
DateTime d = DateTime.ParseExact(s, format, CultureInfo.InvariantCulture); //this throws FormatException
在使用YYYY'的「YYY」自定義格式說明表示用最少的三位數字的年份。如果年份有三位以上有效數字,則它們包含在結果字符串中。如果年份少於三位數字,則用前導零填充數字以產生三位數字。 - 從您鏈接的文檔中獲得。輸出字符串一年有4個字符,而不是3個。因爲你說它只有3個字符,所以它最終拋出。 – derekmckinnon
相當多的文檔似乎是用'ToString()'色彩的眼鏡編寫的。有幾個地方表明Parse系列的方法更爲嚴格。 –
您應該會@derekmckinnon'如果一年有三個以上顯著數字,它們包含在結果string' ParseExact必須十分嚴謹 – user6144226