public bool ValidateDate(Control ctrl)
{
if (!string.IsNullOrEmpty(ctrl.Text))
{
DateTime value;
if (!DateTime.TryParse(ctrl.Text, out value))
{
return false;
}
}
return true;
}
private void txtStartDate_Validating(object sender, CancelEventArgs e)
{
if (Utils.ValidateDate(txtStartDate))
{
errorProvider.SetError(txtStartDate, "");
}
else
{
errorProvider.SetError(txtStartDate, "* Invalid Date");
e.Cancel = true;
}
}
이 m을 입력 날짜에 대해 잘 작동/D/년, 년// yyyy, mm/dd/yy, mm/dd/yyyy. 사용자가 "11/17"과 같은 날짜를 입력하면 유효한 날짜로 평가되지만 유감스럽게도 세 가지 날짜 부분 만있는 날짜 만 필요합니다.
쉬운 방법이 있나요? 필자는 텍스트 상자에 2 "/"가 있는지 확인하는 데 오랜 시간이 걸릴 것이라고 생각했지만 원하는 결과를 얻는 더 깨끗한 방법이 있다고 확신합니다.
편집 : 모든 제안 주셔서 감사합니다! 나는 M/월/일 등을 허용하는 다음 코드를 사용하여 결국 M/D/YY ~
public bool ValidateDate(Control ctrl)
{
if (!string.IsNullOrEmpty(ctrl.Text))
{
string[] formats = {"M/d/yyyy", "M/d/yy"};
DateTime value;
if (!DateTime.TryParseExact(ctrl.Text, formats, new CultureInfo("en-US"), DateTimeStyles.None, out value))
{
return false;
}
}
return true;
}
Nice. 나는 TryParseExact에 대해 완전히 잊었다. +1. –
DateTime.TryParseExact()에는 여러 형식을 허용하는 재정의가 있으므로 형식 지정의 유연성을 포기할 필요가 없었습니다. 감사! – Sesame
우수. 나는 그 과부하에 대해 잊어 버렸다. 그게 너에게 효과적이라고 나는 기뻐. –