2012-09-07 96 views
0

如果用戶輸入實際上是日期,那麼我試圖convert a string to datetime to validate不能將類型bool隱式轉換爲System.DateTime(C#)

我得到的錯誤是:

Cannot implicitly convert type bool to System.DateTime. 

我一直在網上找了一段時間,並不能找到足夠具體的幫助我什麼都不懂。

代碼:

public bool is21YearsOfAge(string argument) 
    { 
     DateTime _parsedDateArgument; 
     DateTime convertStringToDate = System.DateTime.TryParse(argument, out >_parsedDateArgument); 

     if (convertStringToDate > DateTime.Now) 
     { 
      //do something 
     } 

    } 

在此先感謝。

+1

你約會的格式是什麼? –

+0

感謝您修復我的格式(新手在這裏)。 – MuffinGuard

回答

2

TryParse方法返回一個bool通知您解析是否成功,而不是像Parse方法不拋出異常。試着這樣做:

DateTime convertStringToDate; 
bool isDate = DateTime.TryParse(argument, out convertStringToDate); 

如果argument是一個日期,convertStringToDate將包含日期爲DateTime

+0

謝謝,丹(和其他幫助過的人)。 – MuffinGuard

2

DateTime.TryParse返回bool以指示解析是否成功。所以,你應該做的

System.DateTime.TryParse(argument, out _parsedDateArgument); 
DateTime convertStringToDate =_parsedDateArgument 
1

應該

DateTime convertStringToDate; 

if(System.DateTime.TryParse(argument, out convertStringToDate)) 
{ 
    //Now you will have converted date in convertStringToDate 
    if (convertStringToDate > DateTime.Now) 
    { 
     //do something 
    } 
} 
else 
{ 
    //argument not have a valid date 
} 

System.DateTime.TryParse將retrun true,如果,參數將有一個有效的日期字符串轉換。並且轉換日期將存儲在其輸出參數中。

0

DateTime.TryParse不返回DateTime值。它返回一個bool指示它是否可以解析它。

而是使用

DateTime convertStringToDate; 
if(DateTime.TryParse(argument, out convertStringToDate)){ 
    //ok value is good 
}else{ 
    //Not ok value is not good 
} 
1

看那documentation for DateTime.TryParse - 它回報一個bool,但是有一個參數解析結果:

DateTime dateTime; 
bool success = DateTime.TryParse(text, out dateTime); 

如果success是假的,意味着文本無法被解析。 (所以通常在這一點上,你會顯示錯誤給用戶)

你已經得到了out參數 - 你爲什麼想到結束了兩個不同的DateTime值(一個爲返回值和一個來自out參數)?

當你得到這樣的錯誤,總是閱讀文檔作爲診斷問題的第一步。

0

用這個代替,

DateTime _parsedDateArgument; 
bool success = System.DateTime.TryParse(argument, out _parsedDateArgument); 

永遠記住,Tryparse總是返回boolean值。

0

的TryParse返回bool,只使用Parse代替,或out變量分配給新的你:

System.DateTime.TryParse(argument, out _parsedDateArgument); 
DateTime convertStringToDate = _parsedDateArgument; 

或像這樣:

DateTime convertStringToDate = DateTime.Parse(argument); 
0

添加下面的命名空間

using System.Globalization; 

創建CultureInfo類的對象

CultureInfo MyCI = new CultureInfo("en-US"); 
DateTime convertStringToDate = System.DateTime.TryParse(argument.ToString("MM/dd/yy", MyCI), out _parsedDateArgument); 
相關問題