我的get方法中的一个参数是如下的日期时间:
http://localhost/accounts/?name=Junetest&uid=00000002&datetimechange=2015-04-12 15:14:20-0500
在我的控制器中,我转换日期时间即。
if (row["datetimechange"] != null){
var dtNewValue = Convert.ToDateTime(row["datetimechange"].ToString());
}
如果传递的值正确,则此方法有效。但是,如果我添加一些特殊字符
http://localhost/accounts/?name=Junetest&uid=00000002&datetimechange=2015- 04-12 15:14:20-0500asfdsfsdfds
转换仍然不会抛出任何异常,只有在实际的get操作期间才会失败。
有没有办法检查日期时间是否没有特殊字符或额外字符,然后在转换期间而不是转换后抛出异常。
我想过使用正则表达式或tryParse。我在想什么? PLS。让我知道是否有更清洁的方法来处理这个
答案 0 :(得分:0)
最好尝试使用正则表达式进行过滤
if (row["datetimechange"] != null){
string temp=Convert.ToDateTime(row["datetimechange"].ToString());
MatchCollection mc1 = Regex.Matches(temp, @"[^a-zA-Z]");
foreach (Match m in mc)
dtNewValue=dtNewValue+m.Value.ToString()
}
您可以添加更多过滤以抛出异常。
答案 1 :(得分:0)
使用指定的格式数组,特定于文化的格式信息和样式,将指定的日期和时间字符串表示形式转换为其DateTime等效形式。字符串表示的格式必须至少与指定格式中的一个完全匹配。该方法返回一个值,指示转换是否成功。
当此方法返回时,如果转换成功,则包含等效于s中包含的日期和时间的DateTime值;如果转换失败,则包含MinValue。如果s或格式为null,s或格式元素为空字符串,或者s的格式与格式中至少一种格式模式不完全一致,则转换失败。
var x = DateTime.TryParseExact(dateString, formats,
new CultureInfo("en-US"),
DateTimeStyles.None,
out dateValue);