如何转换日期时间?到日期时间[重复]

问题描述 投票:4回答:6

这个问题在这里已有答案:

我已经提交txtb_dateOfService是完成表格,但如果txtb_dateOfService是emapty返回null如果不是TryParse日期>我有这个错误我不知道如何解决它

'System.DateTime.TryParse(string,out System.DateTime)'的最佳重载方法匹配有一些无效的参数

    DateTime? dateOfService= null;
    if (string.IsNullOrEmpty(txtb_dateOfService.Text))
    {
        dateOfService = null;

    }
    else
        if (DateTime.TryParse(txtb_dateOfService.Text, out dateOfService))
        {

        }
c# asp.net
6个回答
6
投票

你不能将对DateTime?的引用传递给期望DateTime的方法。你可以通过引入一个临时变量来解决这个问题,如下所示:

else { // <<=== This is the final "else" from your code
    DateTime tmp;
    if (DateTime.TryParse(txtb_dateOfService.Text, out tmp))
    {
        dateOfService = tmp;
    } else {
        dateOfService = null;
    }
}

1
投票

如果解析失败,您可以抛出异常:

DateTime? dateOfService= null;
if (string.IsNullOrEmpty(txtb_dateOfService.Text))
{
    dateOfService = null;
}
else
{
    // will throw an exception if the text is not parseable
    dateOfService = DateTime.Parse(txtb_dateOfService.Text);  
}

或使用中间DateTime来存储解析结果:

DateTime? dateOfService= null;
if (string.IsNullOrEmpty(txtb_dateOfService.Text))
{
    dateOfService = null;

}
else
{
    DateTime temp;
    if (DateTime.TryParse(txtb_dateOfService.Text, out temp))
    {
        dateOfService = temp;
    } 
    else 
    {
        dateOfService = null;
    }
}

其中任何一个都可以在逻辑上简化;我正在展示完整的突破以传达逻辑。


1
投票

你的问题是将DateTime?转换为DateTime,反之亦然。 DateTime.TryParse方法的out参数不可为空;在TryParse失败的情况下,out参数将被指定为DateTime.MinValue作为其值。没有理由将此qamxswpoi变量声明为此片段中的可空类型。


0
投票

你可以尝试在dateOfService转换你的string

DateTime

现在你可以使用DateTime? dataOfService = null; DateTime output; if (DateTime.TryParse(txtb_dateOfService.Text, out output)) dataOfService = output; 作为dataOfService并检查它是否有使用Nullable<DateTime>HasValue属性转换的有效数据。


0
投票

你需要创建一个临时值来保存Value的out参数:

TryParse

一个更简洁的例子

DateTime tmp;
if (DateTime.TryParse(txtb_dateOfService.Text, out tmp)) {
    dateOfService = tmp;
} else{
    dateOfService = null;
}

0
投票

尝试dateOfService.Value,这应该工作(我认为)

© www.soinside.com 2019 - 2024. All rights reserved.