如何将诸如2009-05-08 14:40:52,531这样的字符串转换为DateTime?
当前回答
转换。ToDateTime或DateTime。解析
其他回答
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文档
我只是找到了一个优雅的方法:
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"
由于您处理的是基于24小时的时间,并且您使用逗号分隔秒分数,因此我建议您指定一个自定义格式:
DateTime myDate = DateTime.ParseExact("2009-05-08 14:40:52,531", "yyyy-MM-dd HH:mm:ss,fff",
System.Globalization.CultureInfo.InvariantCulture);
你基本上有两个选择。DateTime.Parse()和DateTime.ParseExact()。
第一个在语法方面非常宽容,将以许多不同的格式解析日期。它对可能以不同格式出现的用户输入很有帮助。
ParseExact将允许您指定用于解析的日期字符串的确切格式。如果您的字符串总是使用相同的格式,那么使用这个是很好的。通过这种方式,您可以轻松地检测出与预期数据的任何偏差。
你可以这样解析用户输入:
DateTime enteredDate = DateTime.Parse(enteredString);
如果你有一个特定的字符串格式,你应该使用另一种方法:
DateTime loadedDate = DateTime.ParseExact(loadedString, "d", null);
“d”代表短日期模式(更多信息请参阅MSDN), null指定当前区域性应用于解析字符串。
这招对我很管用:
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime dt = DateTime.ParseExact("2009-05-08 14:40:52,531","yyyy-MM-dd HH:mm:ss,fff", provider);
推荐文章
- 返回匿名类型的结果?
- indexOf()和search()的区别是什么?
- 何时使用IList,何时使用List
- ConfigurationManager。AppSettings在.NET Core 2.0中可用?
- 我如何在Swift连接字符串?
- 在c#的控制台应用程序中使用'async
- SQL Developer只返回日期,而不是时间。我怎么解决这个问题?
- 在单元测试中设置HttpContext.Current.Session
- 如何开始开发Internet Explorer扩展?
- 更新行,如果它存在,否则插入逻辑实体框架
- 在mongodb中存储日期/时间的最佳方法
- 在什么情况下SqlConnection会自动被征召到环境事务范围事务中?
- 如何获得一个变量值,如果变量名存储为字符串?
- 用c#解析JSON
- Windows窗体中的标签的换行