将混乱的日期字符串转换为c#中的dateTime对象

本文关键字:中的 dateTime 对象 转换 混乱 日期 字符串 | 更新日期: 2023-09-27 18:28:04

如何将字符串20120313转换为包含值13-Mar-2012DateTime对象?

我把它当成

DataEffectiveDate = Convert.ToDateTime(reader["date_id"]);

但它在这里已经失败了(转换为2001年1月1日)

将混乱的日期字符串转换为c#中的dateTime对象

您需要使用DateTime.ParseExact:

DateTime date = DateTime.ParseExact(text, "yyyyMMdd",
                                    CultureInfo.InvariantCulture);

如果你想把它作为"2012年3月13日",你需要:

string reformatted = date.ToString("dd-MMM-yyyy");

可选地传入您想用于月份名称等的任何区域性。

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

当您有一个特定的格式时,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"));