如何使这个正确的DateTime.TryParse()

时间:2011-03-01 14:48:15

标签: c#

我如何将其变成try解析?

private static DateTime _endDate = DateTime.Parse(System.Configuration.ConfigurationManager.AppSettings["EndDate"])

只是

private static DateTime _endDate = DateTime.TryParse(System.Configuration.ConfigurationManager.AppSettings["EndDate"], out Datetime _endDate)

4 个答案:

答案 0 :(得分:7)

这将是:

private static DateTime _endDate;
if (!DateTime.TryParse(System.Configuration.ConfigurationManager.AppSettings["EndDate"], out _endDate)) {
    // handle failure
}

当然if部分必须在你的构造函数中,它不能在类声明中松散。

答案 1 :(得分:3)

不,因为TryParse会返回bool

如果解析失败,您需要考虑要执行的操作。例如,您可能需要默认值 - 在这种情况下,您可以编写一个方法,例如:

public static DateTime ParseWithDefault(string text, DateTime defaultValue)
{
    DateTime ret;
    if (!DateTime.TryParse(text, out ret))
    {
        ret = defaultValue;
    }
    return ret;
}

...然后从初始化程序中调用 。如果这不是你想要的行为,你需要弄清楚你想要的东西......但变量初始值设定项必须是DateTime类型的表达式(或者可以隐式转换为它)。

如果您需要更复杂的逻辑,可以使用静态构造函数。

答案 2 :(得分:0)

var date = "01/01/2001";

DateTime result;

if (DateTime.TryParse(date, out result))
{
    // it worked
}

给那个镜头..

答案 3 :(得分:0)

DateTime.TryParse返回一个布尔值,因此您无法为其分配DateTime。您应该首先声明它,然后将成功分配给布尔值。

private static DateTime _endDate;
private bool success = _endDate.TryParse(System.Configuration.ConfigurationManager.AppSettings["EndDate"], out _endDate);