1

ユーザー入力が実際に日付で convertあるかどうかを調べようとしています。string to datetime to validate

私が得ているエラーは次のとおりです。

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
       }

   }

前もって感謝します。

4

8 に答える 8

3

このメソッドは、メソッドのように例外をスローするのではなく、解析が成功したかどうかを通知する をTryParse返します。これを試してください:boolParse

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

argumentが日付の場合convertStringToDate、その日付が として含まれますDateTime

于 2012-09-07T06:11:23.980 に答える
2

DateTime.TryParse は bool を返し、解析が成功したかどうかを示します。だからあなたはすべきです

System.DateTime.TryParse(argument, out _parsedDateArgument);
DateTime convertStringToDate =_parsedDateArgument
于 2012-09-07T06:11:01.870 に答える
1

のドキュメントをDateTime.TryParse見てください-それはを返しますが、解析された結果のoutパラメータboolがあります。

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

が false の場合success、テキストを解析できなかったことを意味します。(したがって、通常、この時点でユーザーにエラーを表示します。)

すでにoutパラメーターを取得しています。なぜ2 つの異なる値 (1 つは戻り値として、もう 1 つはパラメーターから) になると予想したのでしょうか?DateTimeout

このようなエラーが発生した場合は、問題を診断するための最初のステップとして、常にドキュメントを読んでください。

于 2012-09-07T06:12:26.733 に答える
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 は、引数に変換する有効な日付文字列がある場合に true を返します。変換された日付は out パラメータに格納されます。

于 2012-09-07T06:11:40.853 に答える
0

代わりにこれを使用して、

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

Tryparse常にブール値を返すことを常に覚えておいてください。

于 2012-09-07T06:12:29.167 に答える
0

TryParse は を返します。代わりにbool使用するParseか、out 変数を新しいものに割り当てます。

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

またはこのように:

DateTime convertStringToDate = DateTime.Parse(argument);
于 2012-09-07T06:12:29.493 に答える
0

DateTime.TryParse は DateTime 値を返しません。解析できるかどうかを示すブール値を返します。

代わりに使用

DateTime convertStringToDate;
if(DateTime.TryParse(argument, out convertStringToDate)){
   //ok value is good
}else{
  //Not ok value is not good
}
于 2012-09-07T06:12:13.480 に答える
0

次の名前空間を追加します

using System.Globalization;

CultureInfo クラスのオブジェクトを作成

CultureInfo MyCI = new CultureInfo("en-US");
DateTime convertStringToDate = System.DateTime.TryParse(argument.ToString("MM/dd/yy", MyCI), out _parsedDateArgument);
于 2012-09-07T06:16:40.857 に答える