У меня есть следующий метод, и он работает правильно, если обрабатывать действительную недействительную/действительную дату, однако, если я столкнулся с пустой строкой или датой с маской, такой как __/__/____
, я хочу передать их как действительные, но DateTime.TryParse
аннулирует их. Как изменить метод ниже, чтобы передать мои недействительные сценарии? Ниже следующий метод приведен пример программы:Обработка недопустимых дат как действительных?
public bool ValidateDate(string date, out string message)
{
bool success = true;
message = string.Empty;
DateTime dateTime;
if(DateTime.TryParse(date,out dateTime))
{
success = false;
message = "Date is Invalid";
}
return success;
}
void Main()
{
//The only date below that should return false is date4.
string date = "01/01/2020";
string date2 = "";
string date3 = "__/__/____";
string date4 = "44/__/2013";
string message;
ValidateDate(date, out message); //Should return true
ValidateDate(date2, out message); //Should return true
ValidateDate(date3, out message); //Should return true
ValidateDate(date4, out message); //Should return false
}
Я не могу изменить его if(!DateTime.TryParse(date3,out dateTime))
, потому что это будет возвращать ложь для дат я хочу проверенными.
Я также пытался сделать что-то вроде if(!date3.contains("_") && DateTime.TryParse(date3,out dateTime))
, но это все еще не удается. Должен ли я перевернуть порядок моей проверки? Проблема заключается в том, что я не просто возвращение ложным на первый неверную дату, я строю StringBuilder
всех недействительных дат, а затем возвращаются, так что я не думаю:
if(DateTime.TryParse(date3,out dateTime))
return true;
else
return true;
public bool ValidateDate(string date, out string message)
{
string[] overrides = {"","__/__/____"};
bool success = true;
message = string.Empty;
DateTime dateTime;
if(!overrides.Contains(date) && !DateTime.TryParse(date,out dateTime))
{
success = false;
message = "Date is Invalid";
}
return success;
}
Вам почти наверняка придется писать регулярное выражение, чтобы справиться с этим. – Yuck
Посмотрите здесь: http://stackoverflow.com/questions/4962276/best-way-to-get-a-date-with-net – frenchie
@Yuck - Я думал о регулярных выражениях. Вы могли бы ответить на это? – Xaisoft