C# 在c语言中将凌乱的日期字符串转换为dateTime对象#

C# 在c语言中将凌乱的日期字符串转换为dateTime对象#,c#,string,C#,String,如何将字符串20120313转换为保存值2012年3月13日的DateTime对象 我把它当作 DataEffectiveDate = Convert.ToDateTime(reader["date_id"]); 但是它在这里已经失败了(转换为1/1/2001)您需要使用: 如果您想将其命名为“2012年3月13日”,您需要: string reformatted = date.ToString("dd-MMM-yyyy"); 。。。可以选择传递您希望用于月份名称等的任何区域性 (另一种选择

如何将字符串
20120313
转换为保存值
2012年3月13日
DateTime
对象

我把它当作

DataEffectiveDate = Convert.ToDateTime(reader["date_id"]);
但是它在这里已经失败了(转换为1/1/2001)

您需要使用:

如果您想将其命名为“2012年3月13日”,您需要:

string reformatted = date.ToString("dd-MMM-yyyy");
。。。可以选择传递您希望用于月份名称等的任何区域性

(另一种选择是使用my,它允许您将此解析为本地日期,而不必担心它将使用什么时间、时区等。)

您需要使用:

如果您想将其命名为“2012年3月13日”,您需要:

string reformatted = date.ToString("dd-MMM-yyyy");
。。。可以选择传递您希望用于月份名称等的任何区域性


(另一种选择是使用my,它允许您将此解析为本地日期,而不必担心它将使用什么时间、时区等。)

当您考虑到特定格式时,
ParseExact
非常有用:

string s = "20120313";
var when = DateTime.ParseExact(s, "yyyyMMdd", CultureInfo.InvariantCulture);

还有一个重载,它可以接受多种候选格式。

当您想到一种特定格式时,
ParseExact
非常有用:

string s = "20120313";
var when = DateTime.ParseExact(s, "yyyyMMdd", CultureInfo.InvariantCulture);

还有一个重载可以接受多种候选格式。

试试
DateTime.ParseExact

string date = DateTime.ParseExact(reader["date_id"], "yyyyMMdd", new CultureInfo("en"));

尝试
DateTime.ParseExact

string date = DateTime.ParseExact(reader["date_id"], "yyyyMMdd", new CultureInfo("en"));

您的意思是要转换20120313或2012年3月13日?仅一条注释-我认为20120313的格式比2012年3月13日的格式稍微不那么凌乱。您的意思是要转换20120313或2012年3月13日的格式吗?仅一条注释-我认为20120313的格式比2012年3月13日的格式稍微不那么凌乱。