我该如何解析这个日期时间字符串?

时间:2014-01-20 08:59:36

标签: c# string datetime datetime-parsing

我无法弄明白,我哪里出错了?

我得到了以下日期时间字符串,需要将其解析为datetime:

string timestr = "1/20/2014 12:05:16 AM"

我试图像这样解析它:

DateTime.ParseExact( timestr,
                     "MM/dd/yyyy hh:mm:ss tt",
                     null);

尝试这样做时会返回

  

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

任何提示?

5 个答案:

答案 0 :(得分:12)

MM适用于0112

使用M代替112

string timestr = "1/20/2014 12:05:16 AM";
var date = DateTime.ParseExact(timestr,
                               "M/dd/yyyy hh:mm:ss tt",
                               CultureInfo.InvariantCulture);
Console.WriteLine(date);

输出将是;

1/20/2014 12:05:16 AM

这里有 demonstration

有关更多信息,请查看;

还要注意小时格式。 hh适用于0112HH适用于0023。如果您的小时为13,则1415等。hh格式将失败。

由于您在null方法中使用IFormatProvider作为DateTime.ParseExact,这意味着它默认使用CurrentCulture。如果DateSeparator不是/,则您的方法会引发FormatException 甚至您的字符串和格式完全匹配,因为"/" format specifier在自定义中具有特殊含义日期和时间格式如; 替换我当前的文化或提供的文化日期分隔符

答案 1 :(得分:0)

你试过吗

 DateTime returnedDate = new DateTime();
 DateTime.TryParse(timestr, out returnedDate);

答案 2 :(得分:0)

M - 月份,从1到12。

“M”自定义格式说明符将月份表示为1到12之间的数字(对于有13个月的日历,表示1到13之间的数字)。格式化一位数的月份没有前导零。

DateTime.ParseExact( timestr,"M/dd/yyyy hh:mm:ss tt",CultureInfo.InvariantCulture);

Msdn

答案 3 :(得分:0)

请尝试

string timestr = "1/20/2014 12:05:16 AM";
DateTime dt = new DateTime();
DateTime.TryParse(timestr, out dt);

答案 4 :(得分:-2)

试试这个:

this.RequestDate = Convert.ToDateTime(this.DcmCreateDate).ToString("dd/MM/yyyy");