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


当前回答

这招对我很管用:

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

其他回答

DateTime。解析

语法:

DateTime.Parse(String value)
DateTime.Parse(String value, IFormatProvider provider)
DateTime.Parse(String value, IFormatProvider provider, DateTypeStyles styles)

例子:

string value = "1 January 2019";
CultureInfo provider = new CultureInfo("en-GB");
DateTime.Parse(value, provider, DateTimeStyles.NoCurrentDateDefault););

值:日期和时间的字符串表示形式。 提供者:提供特定区域性信息的对象。 样式:为某些日期和时间解析方法自定义字符串解析的格式化选项。例如,AllowWhiteSpaces是一个值,它有助于忽略字符串中出现的所有空格。

同样值得记住的是,DateTime是一个在框架内部存储为数字的对象,只有当你将它转换回字符串时,Format才适用于它。

解析:将字符串转换为内部数字类型。 将内部数值转换为可读的格式 字符串。

我最近有一个问题,我试图转换一个日期时间传递给Linq,我当时没有意识到的是格式是不相关的,当传递日期时间到Linq查询。

DateTime SearchDate = DateTime.Parse(searchDate);
applicationsUsages = applicationsUsages.Where(x => DbFunctions.TruncateTime(x.dateApplicationSelected) == SearchDate.Date);

完整的DateTime文档

试试这个

DateTime myDate = DateTime.Parse(dateString);

一个更好的方法是:

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

转换。ToDateTime或DateTime。解析

你想快点吗?

假设您有一个格式为yyMMdd的日期。

我发现转换它的最快方法是:

var d = new DateTime(
(s[0] - '0') * 10 + s[1] - '0' + 2000, 
(s[2] - '0') * 10 + s[3] - '0', 
(s[4] - '0') * 10 + s[5] - '0')

只需根据您选择的日期格式选择索引。如果你需要速度,你可能不介意函数的“非泛型”方式。

此方法所需时间约为以下操作所需时间的10%:

var d = DateTime.ParseExact(s, "yyMMdd", System.Globalization.CultureInfo.InvariantCulture);

试试下面的方法,strDate是你的日期,格式为'MM/dd/yyyy'

var date = DateTime.Parse(strDate,new CultureInfo("en-US", true))