将日期字符串转换为datetime

时间:2012-10-20 10:26:54

标签: c# datetime

我的日期字符串格式为dd-MMM-yyyy,并希望将其转换为datetime,当我使用下面的代码时

DateTime.ParseExact("20-Oct-2012", "yyyy-MM-dd HH:mm tt", null) 

导致错误

  

字符串未被识别为有效的DateTime。

当我修改上面的代码时

DateTime.ParseExact("20-Oct-2012", "dd-MMM-yyyy", null) 

然后我得到了格式(mm/dd/yyyy)的日期时间:10/20/2012 12:00:00 AM

但我需要它应该以{{1​​}}格式转换。请帮助我。

3 个答案:

答案 0 :(得分:6)

你应该试试这个

DateTime.ParseExact("20-Oct-2012", "dd-MMM-yyyy", null).ToString("yyyy/mm/dd")

有关格式Check This

的进一步阅读

答案 1 :(得分:0)

您需要区分两个单独的问题:将原始字符串解析为抽象DateTime表示形式,以及将后者转换回另一个字符串表示形式。

在您的代码中,您只是处理前者,并依赖于隐式ToString()方法调用(使用系统的当前语言环境)将其转换回字符串。如果要控制输出格式,则需要明确指定:

// Convert from string in "dd-MMM-yyyy" format to DateTime.
DateTime dt = DateTime.ParseExact("20-Oct-2012", "dd-MMM-yyyy", null);

// Convert from DateTime to string in "yyyy/MM/dd" format.
string str = dt.ToString("yyyy/MM/dd");

另请注意,mm格式说明符代表分钟;月份由MM表示。

修改:'转换日期包含值“10/20/2012 12:00:00 AM”。'小心你的意思。构造的DateTime值包含任何格式的独立的已解析日期和时间的抽象表示。

但是,为了显示它,您需要将其转换回某些字符串表示形式。当你在调试器中查看变量时(正如你可能正在做的那样),Visual Studio会自动调用DateTime上的无参数ToString()方法,这会在当前文化下呈现日期和时间(在你的情况下,假设美国文化)。

要改变此行为,使其以自定义格式呈现日期和时间,您需要显式调用ToString(string)重载(或其他一个重载),如上面的示例所示

答案 2 :(得分:0)

您可以尝试这样做:

Convert.ToDateTime("20-Oct-2012").ToString("yyyy/MM/dd")

希望这会有所帮助!!