我在ASP.NET MVC 3站点中有一个奇怪的验证失败,其中一个文本框接受通过
jqueryui选择的日期时间.该网站已经过定制,仅适用于es-ES文化,并且大部分时间都可以使用,但在该文本框中每次使用某个月时验证都会失败. datetime.parse方法适用于除march之外的每个月:
DateTime.Parse("15-feb-2012",CultureInfo.GetCultureInfo("es"),DateTimeStyles.None) {15/02/2012 0:00:00} Date: {15/02/2012 0:00:00} DateTime.Parse("15-ene-2012",DateTimeStyles.None) {15/01/2012 0:00:00} Date: {15/01/2012 0:00:00} DateTime.Parse("15-abr-2012",DateTimeStyles.None) {15/04/2012 0:00:00} Date: {15/04/2012 0:00:00}
…
除了3月份,每个月都有工作,Marzo用西班牙语…
DateTime.Parse("15-mar-2012",DateTimeStyles.None) DateTime.Parse("15-mar-2012",DateTimeStyles.None)' threw an exception of type 'System.FormatException' base {System.SystemException}: {"String was not recognized as a valid DateTime."}
任何的想法?
解决方法
使用NUnit重现:
[Test] [ExpectedException(typeof(FormatException),ExpectedMessage = "String was not recognized as a valid DateTime.")] public void ParsingWithAbbreviatedSpanishmarchBlowsUp() { var dt = DateTime.Parse("15-mar-2012",CultureInfo.GetCultureInfo("es-ES"),DateTimeStyles.None); }
尝试设置格式,这有效:
var format = "dd-MMM-yyyy"; var input= "15-mar-2012"; var dt = DateTime.ParseExact(input,format,new CultureInfo("es-ES")); Console.WriteLine(dt);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。