转换为日期时间时出错(未将字符串识别为有效的日期时间。)

时间:2018-11-17 14:17:36

标签: c# datetime

我正在尝试将以下日期字符串转换为datetime对象。但是由于某种原因,它不起作用。知道可能是什么问题吗?

string dt = "22-08-2018 16:53:00:000";
var date = Convert.ToDateTime(dt);
Console.WriteLine(date);

// Shaiz

2 个答案:

答案 0 :(得分:0)

输入字符串似乎错误。随着“ 22-08-2018 16:53:00.000”它将起作用。注意“。”的使用。分隔秒和毫秒

答案 1 :(得分:0)

我认为这可能取决于当前的文化。您的示例中的值似乎是年-月-年,并且如果尝试以“ en-US”文化进行转换(例如),它将产生System.FormatException: String was not recognized as a valid DateTime. 如果您知道日期时间字符串的格式,则可以“强制”将其转换。这是使用示例输入字符串的单元测试:

    [TestMethod]
    public void TestMethod2()
    {
        var dtFormat = new DateTimeFormatInfo();
        dtFormat.ShortDatePattern = "dd-MM-yyyy"; // force to day-month-year

        string dt = "22-08-2018 16:53:00.000";
        var date = Convert.ToDateTime(dt, dtFormat);

        Assert.AreEqual(new DateTime(2018, 08, 22, 16, 53, 0), date);
    }