我有一段代码,用于解析和验证用户输入:
DateTime myDateTime = DateTime.Parse(userInput,currentCulture);
当前的区域设置为en-ca或fr-ca,并且用户输入始终以ISO 8601格式"yyyy-MM-dd"表示。
如果用户输入1900-01-01,则日期将按预期创建。如果输入为"1900-01+01",则创建的日期时间为1899-12-31 6:00:00 PM。不会抛出异常,DateTime.Parse会愉快地将其转换为错误的日期。
为了使其正常工作,我使用DateTime.ParseExact(userInput,"yyyy-MM-dd",currentCulture)
。
所以我的问题不是如何使其正常工作(我已经解决了),而是+01或任何+值有什么问题?我是否在ISO标准中漏掉了什么东西?