1

我正在尝试如果用户输入实际上是日期 convertstring 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方法返回一个通知您解析是否成功,而不是像该方法那样bool抛出异常。Parse尝试这样做:

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 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 回答
1

查看文档DateTime.TryParse- 它返回a bool,但解析结果有一个out参数:

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

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

你已经得到了out参数——为什么你期望得到两个不同DateTime的值(一个作为返回值,一个来自out参数)?

当您遇到此类错误时,请始终阅读文档作为诊断问题的第一步。

于 2012-09-07T06:12:26.733 回答
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

改用这个,

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

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

于 2012-09-07T06:12:29.167 回答
0

TryParse 返回 a bool,仅使用Parse,或将 out 变量分配给您拥有的新变量:

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

或像这样:

DateTime convertStringToDate = DateTime.Parse(argument);
于 2012-09-07T06:12:29.493 回答
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 回答