是天使的一定要进来 求判断2007/12/11这种格式日期的有效性即合法性 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 建议用正则表达式:^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$ hehe,最笨的方法就是try一下转换,转换成功的就是合法的,失败的就是非法的DateTime.TryParseExact 方法 DateTime.TryParseExact 具体怎么用啊能不能给个实例偶看看 try{ DateTime dtime = DateTime.ParseExact("2007/09/19", "yyyy/MM/dd", System.Globalization.DateTimeFormatInfo.InvariantInfo);}catch(Exception ex){ throw ex;} 我这个日期字段是datagridview的一个单元,用了7楼的方法还是会出来那个系统错误 if (dgrdvYlqb.CurrentCell.ColumnIndex == 2 || dgrdvYlqb.CurrentCell.ColumnIndex == 3 || dgrdvYlqb.CurrentCell.ColumnIndex == 4 || dgrdvYlqb.CurrentCell.ColumnIndex == 5) { try { string str = dgrdvYlqb.CurrentCell.Value.ToString().Substring(0, dgrdvYlqb.CurrentCell.Value.ToString().Length-8); try { DateTime dtime = DateTime.ParseExact(str, "yyyy/MM/dd", System.Globalization.DateTimeFormatInfo.InvariantInfo); } catch { MessageBox.Show("错误"); } DateTime.Parse(str); } catch { MessageBox.Show("10桁日期型(2007/12/11)を入力して下さい"); dgrdvYlqb.CurrentCell.Style.ForeColor = Color.Red; submitFlag = false; } } if (submitFlag) { this.btnSubmit.Enabled = true; } DateTime dtime = DateTime.ParseExact(str, "yyyy/MM/dd ", System.Globalization.DateTimeFormatInfo.InvariantInfo); 这个代码已经将str 转换为 datetime了 (如果符合日期格式的话) 所以 你没有必要再用DateTime.Parse(str); 你debug跟一下 看看你的str是否是满足 yyyy/MM/dd的串 DateTime.Parse(str); 这句我注释掉了我明白了如果STR不是 yyyy/MM/dd就会报错但是我想报自己的MessageBox.Show( "错误 "); 而不是系统的错误,就是要防止用户输入·2007/12/· 这样的东西。 完全可以啊try{ DateTime dtime = DateTime.ParseExact("2007/09/19", "yyyy/MM/dd", System.Globalization.DateTimeFormatInfo.InvariantInfo);}catch{ MessageBox.Show("请按照'1999/01/01'格式输入","提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);} 会不会是因为我放在这个方法里面的缘故阿。CellEndEdit(object sender, DataGridViewCellEventArgs e)就是不行呀。会出来那张图片的错误 DateTime.TryParse 方法注意:此方法在 .NET Framework 2.0 版中是新增的。 将日期和时间的指定字符串表示转换成其等效的 DateTime。 命名空间:System程序集:mscorlib(在 mscorlib.dll 中)public static bool TryParse ( string s, out DateTime result)参数s包含要转换的日期和时间的字符串。 result当此方法返回时,如果转换成功,则包含与 s 中包含的日期和时间等效的 DateTime 值;如果转换失败,则为 MinValue。如果 s 参数为 空引用(在 Visual Basic 中为 Nothing),或者不包含日期和时间的有效字符串表示形式,则转换失败。该参数未经初始化即被传递。 返回值如果 s 参数成功转换,则为 true;否则为 false。====================偶只是来看天使的...顺便摘抄一点儿地狱指南里的东东... DataErrorCellValidating事件分别测试一下DateTime.TryParse 字符串内部条件判断问题 wince下笔划输入法 关于Button与tabcontrol的问题。谢谢 急,这是什么错误呀?新手上路 DataList存储过程分页代码 最要带注释的 我是新手 谢谢 通信 急!如何向一个asp网页发信息,只要发个字符串就可以了。有delphi 的例子。 怎样取得当前计算机的时间? 各位老大们急救!!! 求c#通过snmp连接交换机并获取arp表的代码或者方法。 求一算法 HtmlElement.OuterHtml将原字符格式改变,如何知道它的原字符串?
^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$
try
{
DateTime dtime = DateTime.ParseExact("2007/09/19", "yyyy/MM/dd", System.Globalization.DateTimeFormatInfo.InvariantInfo);
}
catch(Exception ex)
{
throw ex;
}
|| dgrdvYlqb.CurrentCell.ColumnIndex == 4 || dgrdvYlqb.CurrentCell.ColumnIndex == 5)
{
try
{
string str = dgrdvYlqb.CurrentCell.Value.ToString().Substring(0, dgrdvYlqb.CurrentCell.Value.ToString().Length-8);
try
{
DateTime dtime = DateTime.ParseExact(str, "yyyy/MM/dd", System.Globalization.DateTimeFormatInfo.InvariantInfo);
}
catch
{
MessageBox.Show("错误"); } DateTime.Parse(str);
}
catch
{
MessageBox.Show("10桁日期型(2007/12/11)を入力して下さい");
dgrdvYlqb.CurrentCell.Style.ForeColor = Color.Red;
submitFlag = false;
}
}
if (submitFlag)
{
this.btnSubmit.Enabled = true;
}
你debug跟一下 看看你的str是否是满足 yyyy/MM/dd的串
我明白了如果STR不是 yyyy/MM/dd就会报错但是我想报自己的MessageBox.Show( "错误 "); 而不是系统的错误,就是要防止用户输入·2007/12/· 这样的东西。
{
DateTime dtime = DateTime.ParseExact("2007/09/19", "yyyy/MM/dd", System.Globalization.DateTimeFormatInfo.InvariantInfo);
}
catch
{
MessageBox.Show("请按照'1999/01/01'格式输入","提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
程序集:mscorlib(在 mscorlib.dll 中)public static bool TryParse (
string s,
out DateTime result
)参数
s
包含要转换的日期和时间的字符串。 result
当此方法返回时,如果转换成功,则包含与 s 中包含的日期和时间等效的 DateTime 值;如果转换失败,则为 MinValue。如果 s 参数为 空引用(在 Visual Basic 中为 Nothing),或者不包含日期和时间的有效字符串表示形式,则转换失败。该参数未经初始化即被传递。 返回值
如果 s 参数成功转换,则为 true;否则为 false。====================
偶只是来看天使的...顺便摘抄一点儿地狱指南里的东东...
CellValidating
事件分别测试一下DateTime.TryParse