C# 如何将其设置为适当的日期时间。TryParse()

C# 如何将其设置为适当的日期时间。TryParse(),c#,C#,我如何将其转换为一个try解析 private static DateTime _endDate = DateTime.Parse(System.Configuration.ConfigurationManager.AppSettings["EndDate"]) 只是 private static DateTime _endDate = DateTime.TryParse(System.Configuration.ConfigurationManager.AppSettings["EndDat

我如何将其转换为一个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)
它将是:

private static DateTime _endDate;
if (!DateTime.TryParse(System.Configuration.ConfigurationManager.AppSettings["EndDate"], out _endDate)) {
    // handle failure
}
当然,if部分必须在构造函数中,它不能在类声明中松散。

否,因为TryParse返回bool

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

public static DateTime ParseWithDefault(string text, DateTime defaultValue)
{
    DateTime ret;
    if (!DateTime.TryParse(text, out ret))
    {
        ret = defaultValue;
    }
    return ret;
}
。。。然后从初始值设定项中调用它。如果这不是你想要的行为,你需要弄清楚你想要什么。。。但是变量初始值设定项必须是DateTime类型的表达式,或者可以隐式转换为DateTime类型的表达式

如果您需要更复杂的逻辑,您可以为它潜在地使用静态构造函数

var date = "01/01/2001";

DateTime result;

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

给它一个快照..

DateTime.TryParse返回一个布尔值,因此不能为其指定日期时间。您应该首先声明它,然后将其success赋值给布尔值

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

在结尾处丢失日期时间-Thx@Daniel,修正了。我最初剪切并粘贴了错误的代码,修复了最严重的错误。没问题,只是想确保你的答案是正确的,当它出现时:-什么是文化,比如en-US,es-es等?@Kiquenet:这不符合问题中所述的要求,特别是相当于DateTime。解析给定的版本,是吗?这将提供一个企业解决方案,假设所有日期都是通过该设备解析的,那么该解决方案将很容易扩展。我重载它以只允许文本,并将默认值设置为允许全局默认值+1.