我在asp.NET MVC视图中使用下拉列表来选择时间来阻止用户进入我们的系统。文化信息变化时DateTime.Parse()失败
@Html.DropDownListFor(model => model.AccessTimeBegin, new SelectList(new List<Object> {
new { value = "6/22/2009 1:00:00" , text = "01:00 AM" },
new { value = "6/22/2009 2:00:00" , text = "02:00 AM" },
new { value = "6/22/2009 3:00:00" , text = "03:00 AM" },
new { value = "6/22/2009 4:00:00" , text = "04:00 AM" },
new { value = "6/22/2009 5:00:00" , text = "05:00 AM" },
new { value = "6/22/2009 6:00:00" , text = "06:00 AM" },
new { value = "6/22/2009 7:00:00" , text = "07:00 AM" },
new { value = "6/22/2009 8:00:00" , text = "08:00 AM" },
new { value = "6/22/2009 9:00:00" , text = "09:00 AM" },
new { value = "6/22/2009 10:00:00" , text = "10:00 AM" },
new { value = "6/22/2009 11:00:00" , text = "11:00 AM" },
new { value = "6/22/2009 12:00:00" , text = "12:00 PM" },
new { value = "6/22/2009 13:00:00" , text = "01:00 PM" },
new { value = "6/22/2009 14:00:00" , text = "02:00 PM" },
new { value = "6/22/2009 15:00:00" , text = "03:00 PM" },
new { value = "6/22/2009 16:00:00" , text = "04:00 PM" },
new { value = "6/22/2009 17:00:00" , text = "05:00 PM" },
new { value = "6/22/2009 18:00:00" , text = "06:00 PM" },
new { value = "6/22/2009 19:00:00" , text = "07:00 PM" },
new { value = "6/22/2009 20:00:00" , text = "08:00 PM" },
new { value = "6/22/2009 21:00:00" , text = "09:00 PM" },
new { value = "6/22/2009 22:00:00" , text = "10:00 PM" },
new { value = "6/22/2009 23:00:00" , text = "11:00 PM" },
new { value = "6/22/2009 24:00:00" , text = "12:00 AM" },
}, "value", "text"), new { @class = "form-control", @data_toggle = "tooltip", @data_placement = "top", @title = UserManager.ttEarliestTime })
在我被要求国际化应用程序之前,我的控制器中的这部分代码工作得很好。
UserRepository repo = new UserRepository();
DateTime start = new DateTime();
DateTime end = new DateTime();
if (model.AccessTimeBegin != "6/22/2009 1:00:00" && model.AccessTimeEnd != "6/22/2009 1:00:00")
{
start = DateTime.Parse(model.AccessTimeBegin);
end = DateTime.Parse(model.AccessTimeEnd);
}
if (start != DateTime.MinValue && end != DateTime.MinValue)
{
model.AccessTimeBeginDT = default(DateTime).Add(start.TimeOfDay);
model.AccessTimeEndDT = default(DateTime).Add(end.TimeOfDay);
}
repo.EditUser(model);
现在,当我切换文化 “ES” DateTime.Parse()抛出一个异常...
System.FormatException:字符串未被识别为有效的DateTime
我不明白,为什么?我的猜测是Parse()函数着眼于文化,当文化被设置为“es”并且说“Okay Jose,第6天,第22个月...... QUE?”时,它正在查看字符串。 反过来,当它被设置为“en-US”时,它会查看字符串并说:“第6个月,第22天,2009年......”,它解析它就好了。
我该如何解决这个问题?
查看复制品。 '6/22/2009 10:00:00'的格式字符串应该是'M/d/yyyy HH:mm:ss',但如果您使用的是2位数的日期,则使用格式字符串'M/dd/yyyy HH :mm:ss' – Igor