我有以下方法,它能正常工作,只要處理一個真正的無效/有效日期,但是,如果我遇到一個空的字符串或日期與掩碼如__/__/____
,我想通過那些有效,但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))
,因爲這會然後我想驗證的日期返回false。
我也試過做類似if(!date3.contains("_") && DateTime.TryParse(date3,out dateTime))
,但這仍然失敗。我應該翻轉我的驗證順序嗎?問題是,我不只是返回false第一個無效的日期,我建立所有的無效日期的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