如何将诸如2009-05-08 14:40:52,531这样的字符串转换为DateTime?


当前回答

由于您处理的是基于24小时的时间,并且您使用逗号分隔秒分数,因此我建议您指定一个自定义格式:

DateTime myDate = DateTime.ParseExact("2009-05-08 14:40:52,531", "yyyy-MM-dd HH:mm:ss,fff",
                                       System.Globalization.CultureInfo.InvariantCulture);

其他回答

试试这个

DateTime myDate = DateTime.Parse(dateString);

一个更好的方法是:

DateTime myDate;
if (!DateTime.TryParse(dateString, out myDate))
{
    // handle parse failure
}

转换。ToDateTime或DateTime。解析

我只是找到了一个优雅的方法:

Convert.ChangeType("2020-12-31", typeof(DateTime));

Convert.ChangeType("2020/12/31", typeof(DateTime));

Convert.ChangeType("2020-01-01 16:00:30", typeof(DateTime));

Convert.ChangeType("2020/12/31 16:00:30", typeof(DateTime), System.Globalization.CultureInfo.GetCultureInfo("en-GB"));

Convert.ChangeType("11/شعبان/1437", typeof(DateTime), System.Globalization.CultureInfo.GetCultureInfo("ar-SA"));

Convert.ChangeType("2020-02-11T16:54:51.466+03:00", typeof(DateTime)); // format: "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffzzz"

你基本上有两个选择。DateTime.Parse()和DateTime.ParseExact()。

第一个在语法方面非常宽容,将以许多不同的格式解析日期。它对可能以不同格式出现的用户输入很有帮助。

ParseExact将允许您指定用于解析的日期字符串的确切格式。如果您的字符串总是使用相同的格式,那么使用这个是很好的。通过这种方式,您可以轻松地检测出与预期数据的任何偏差。

你可以这样解析用户输入:

DateTime enteredDate = DateTime.Parse(enteredString);

如果你有一个特定的字符串格式,你应该使用另一种方法:

DateTime loadedDate = DateTime.ParseExact(loadedString, "d", null);

“d”代表短日期模式(更多信息请参阅MSDN), null指定当前区域性应用于解析字符串。

使用DateTime.Parse(字符串):

DateTime dateTime = DateTime.Parse(dateTimeStr);