如果成员没有进入,我试图验证出生文本框字段的两个数据 这两个框会弹出一条错误信息,如“请输入有效的日期格式”
使用以下代码
if (tbStartDate.Text != "0" && tbEndDate.Text != "0")
{
string dob = tbStartDate.Text;
DateTime dv = DateTime.Parse(dob);
string format1 = dv.ToString("yyyy-MM-dd");
string dob2 = tbEndDate.Text;
DateTime dt2 = DateTime.Parse(dob2);
string format2 = dt2.ToString("yyyy-MM-dd");
}
else
{
MessageBox.Show("pls enter valid date ");
}
当我尝试保存而不输入文本框值时,它显示的错误是这样的 “字符串未被识别为有效的DateTime”。
任何人都可以帮忙......
这是经过修改的代码,但它仍然在Datetime DV显示错误;
private void btnCTimetablessave_Click(object sender, EventArgs e)
{
string dob = tbStartDate.Text;
DateTime dv;
if (!DateTime.TryParse(dob, out dv))
{
MessageBox.Show("pls enter a valid start date");
return;
}
string format1 = dv.ToString("yyyy-MM-dd");
string dob2 = tbEndDate.Text;
DateTime dt2;
if (!DateTime.TryParse(dob2, out dt2))
{
MessageBox.Show("pls enter valid end date");
return;
}
string format2 = dt2.ToString("yyyy-MM-dd");
仍然在日期时间Dv显示错误,如“字符串未被识别为有效日期时间”;
这是第三次修改代码
private void btnCTimetablessave_Click(object sender, EventArgs e)
{
string dob = tbStartDate.Text;
DateTime dv;
if (!DateTime.TryParse(dob, out dv))
{
MessageBox.Show("pls enter a valid start date");
return ;
}
string format1 = dv.ToString("yyyy-MM-dd");
string dob2 = tbEndDate.Text;
DateTime dt2;
if (!DateTime.TryParse(dob2, out dt2))
{
MessageBox.Show("pls enter valid end date");
return;
}
string format2 = dt2.ToString("yyyy-MM-dd");
}
答案 0 :(得分:5)
不要使用DateTime.Parse。请改用DateTime.TryParse
。结果是一个布尔值,如果解析成功,则返回true。
<强>更新强> 根据您的评论中的要求:
DateTime dv;
if(!DateTime.TryParse(dob,out dv)){
MessageBox.Show("Please enter a valid date");
return;
}
....
Cleary,你也可以使用Parse并捕获异常,但这样做会很糟糕。最好使用TryParse。我只检查了一个日期值。您可以根据需要扩展逻辑。希望这有帮助。
答案 1 :(得分:1)
这是因为当您访问Text属性时,空文本框返回空字符串,如果传递空字符串,则DateTime.Parse()将抛出该异常。
答案 2 :(得分:0)
使用string.IsNullOrEmpty(tbStartDate.Text)
检查其是否为空白。
我建议您使用DatetimePicker
选择日期,这将为您返回有效的DateTime
值,您可以将其用于进一步处理
答案 3 :(得分:0)
你必须像这样使用Datetime.TryParse
if(!DateTime.TryParse(dob))
答案 4 :(得分:0)
我建议您使用try catch block
来捕获FormatException
,这样如果用户没有以正确的格式输入日期,它将捕获异常并给出您选择的消息
try
{
string dob = tbStartDate.Text;
DateTime dv = DateTime.Parse(dob);
string format1 = dv.ToString("yyyy-MM-dd");
string dob2 = tbEndDate.Text;
DateTime dt2 = DateTime.Parse(dob2);
string format2 = dt2.ToString("yyyy-MM-dd");
}
catch (System.FormatException)
{
MessageBox.Show("pls enter valid date format");
}
或强>
使用DateTimePicker
始终是一种更好且用户友好的方法