PDA

View Full Version : Bắt lỗi ngày tháng.



jackson_to
01-04-2009, 20:47
Chào các bạn, mình có bài tập liên quan đến dạng ngày tháng. Mình muốn bắt lỗi ớ định dạng ngày tháng,ví dụ ngày tháng bắt phải nhập là yyyy-mm-dd, mà khi nhập vào dd-mm-yyyy thì báo lỗi và bắt nhập lại. Mình làm nhưng nó ra lỗi bằng tiếng anh " String was not recognized as a valid DateTime". Mình muốn sửa lỗi đó lại bằng Tiếng việt thì phải lam sao. Mong các bạn giúp đỡ.
Thanks a lot.

doanhathanh
01-04-2009, 20:54
sửa lại nội dung lỗi thôi hả?
try
{
//chuyển sang ngày tháng ở đây
} catch(Exception ex)
{
if(ex.Message==" String was not recognized as a valid DateTime")
MessageBox("Ngay thang ko hop le", "Loi");
}

jackson_to
01-04-2009, 23:29
Cảm ơn bạn đã trả lời. Trong chương trình mình cũng đã bắt một lỗi là tuổi phải >=18 và mình cũng đã dùng try...... catch(exeption ex). Cho nên khi mình dùng đoạn code mà bạn chỉ thì nó báo lỗi.

doanhathanh
02-04-2009, 08:37
bạn nói rõ hơn được ko? với lại mình nghĩ xác định tuổi >=18 thì dùng if bình thường thôi, dùng try..catch là sao mà bắt lỗi được. giống như bạn so sánh xem 0>=1 hay không thôi. lấy năm hiện tại trừ đi năm sinh -> số tuổi.

if(số tuổi<18) MessageBox.Show("Em còn nhỏ quá");

jackson_to
02-04-2009, 12:21
Mình dùng try... catch và cũng có dùng properties. Như thế này:
public DateTime Ngaysinh
{
get {return ngaysinh;}
set
{
if((DateTime.Today.Year)-(value.Year)<18)
throw new Exception("Tuoi phai >= 18");
else
ngaysinh=value;
}
}
nhapngaysinh:
try
{
Console.WriteLine("Nhap vao ngay sinh: ");
Ngaysinh = DateTime.Parse(Console.ReadLine());

}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
goto nhapngaysinh;

}
Vì vậy khi thêm vào (Exception ex) nữa thì nó báo lỗi

doanhathanh
02-04-2009, 15:39
Hiểu rồi, làm như vầy nghen (mình viết cho winform, bạn thay MessageBox.Show thành WriteLine nghen, thông cảm, làm biếng test trên console quá):

DateTime ngaysinh;

public DateTime Ngaysinh
{
get { return ngaysinh; }
set
{
if ((DateTime.Today.Year) - (value.Year) < 18)
throw new Exception("Tuoi phai >= 18");
else
ngaysinh = value;
}
}

private void Nhap_NgaySinh(string s)
{
try
{
Ngaysinh = DateTime.Parse(s);

}
catch (Exception ex)
{
if (ex.Message == "String was not recognized as a valid DateTime.") MessageBox.Show("Ngay thang ko hop le");
else MessageBox.Show(ex.Message);
}
}