2017-05-17 182 views
0
var test = DateTime.ParseExact("Feb 4 2014 12:00AM", "MMM dd yyyy HH:mmtt", System.Globalization.CultureInfo.InvariantCulture).ToString("yyy-MM-dd"); 
System.Diagnostics.Debug.WriteLine(test); 

所以我得到了这段代码。我正在尝试将Feb 4 2014 12:00AM转换为2014-02-04日期时间更改格式错误

我得到的错误是这个:

型“System.FormatException”的异常出现在mscorlib.dll,但在用户代码中没有处理

其他信息:字符串是未被识别为有效的日期时间。

但我找不出什么问题。任何想法 ?

回答

4

几个问题与您的格式。它应该是:

"MMM d yyyy hh:mmtt" 

用途:

  • d日期部分,因为它可以容纳单,双位数的日期,你目前的符dd所期望的个位数的日期部分开始与零象04。单个d可用于解析单/双数字日期。
  • 使用hh而不是HH小时部分,因为您的字符串中有AM,这意味着您的小时格式为12小时,而不是24小时。

所以,你的代码应该是:

var test = DateTime.ParseExact("Feb 4 2014 12:00AM", "MMM d yyyy hh:mmtt", System.Globalization.CultureInfo.InvariantCulture).ToString("yyy-MM-dd"); 
+1

非常感谢。我也尝试过单个'd',但没有想到问题来自'hh'。我在相反的地方读了一遍,认为这是'12小时'而不是'24'。 Thanx buddy :) – Darkpingouin

+0

当日期是这种格式时仍然会遇到异常情况:'Apr 17 2014 12:00 AM''d'只管理单个天数吗? – Darkpingouin

+0

终于找到了问题。所以显然,当你从一个SQL请求转向字符串日期时。它执行以下操作: - 如果日数是“4”,它会给你“4”而不是“4”。 - 如果一天是“17”,它会给你正确的'17'。 我使用Replace函数来解决它。 – Darkpingouin