DateTime.TryParseExact失败

时间:2015-08-06 13:25:10

标签: c#

我需要一个将字符串转换为日期时间的方法。 日期时间的格式必须为dd/MM/yyyy 如果字符串采用任何其他格式,则该方法将返回null。

到目前为止,这是我的照片:

    private DateTime? StringToDateTime(string value)
    {
        DateTime? Result = null;
        DateTime test = DateTime.Now.Date;
        if (DateTime.TryParseExact(value, "dd/MM/yyyy", System.Globalization.CultureInfo.InstalledUICulture, System.Globalization.DateTimeStyles.None, out test))
            Result = test;
        return Result;
    }

并测试它我用这个

    private void button1_Click(object sender, EventArgs e)
    {
        string value = "01/01/2015";
        DateTime? test = StringToDateTime(value);
        if (test == null)
            MessageBox.Show("invalid date entered");
        else
            MessageBox.Show(test.ToString()); 
    }

现在问题是TryParseExact总是失败。 我也尝试"dd/mm/yyyy"作为格式,但结果相同。

所以我必须在这里做错事。 有没有人有一个例子如何使用DateTime.TryParseExact或者有另一种方法吗?

编辑:这不是重复,因为“重复”链接建议使用TryParseExact,而我的问题从一开始就使用它,并询问为什么它不起作用

1 个答案:

答案 0 :(得分:4)

将您的代码更改为:

DateTime? Result = null;
DateTime test = DateTime.Now.Date;
if (DateTime.TryParseExact(value, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out test))
    Result = test;

更改是使用 CultureInfo.InvariantCulture 而不是 CultureInfo.InstalledUICulture