如果用户输入实际上是日期,我尝试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 } }
提前致谢。
答案 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);