无法将类型bool隐式转换为System.DateTime(C#)

时间:2012-09-07 06:08:05

标签: c# datetime

如果用户输入实际上是日期,我尝试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
       }

   }

提前致谢。

8 个答案:

答案 0 :(得分:2)

DateTime.TryParse返回bool以指示解析是否成功。所以你应该做

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

答案 1 :(得分:2)

TryParse方法返回bool,通知您解析是否成功,而不是像Parse方法那样抛出异常。试着这样做:

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

如果argument是日期,则convertStringToDate会将该日期包含为DateTime

答案 2 :(得分: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参数中。

答案 3 :(得分:1)

查看documentation for DateTime.TryParse - 它返回一个bool,但对于已解析的结果有一个 out 参数:

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

如果success为false,则表示无法解析文本。 (因此,此时通常会向用户显示错误。)

您已经获得了out参数 - 为什么期望最终得到两个不同的DateTime值(一个作为返回值,一个来自{ {1}}参数)?

如果出现这样的错误,总是将文档作为诊断问题的第一步。

答案 4 :(得分:0)

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

改为使用

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

答案 5 :(得分:0)

改为使用它,

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

永远记住Tryparse总是返回布尔值。

答案 6 :(得分:0)

TryParse返回bool,只使用Parse,或将out变量指定给您拥有的新变量:

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

或者像这样:

DateTime convertStringToDate = DateTime.Parse(argument);

答案 7 :(得分:0)

添加以下命名空间

using System.Globalization;

创建CultureInfo类的对象

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