ParseExact DateTime错误

时间:2017-02-06 23:33:05

标签: c# datetime datetime-format

我有一个DateTime列表作为字符串:dd.MM.yyyy H:mm:ss(时间是24小时格式,但小时是一位数:6而不是06)< / p>

  • 14.12.2016 6:20:21
  • 15.12.2016 8:30:00
  • 16.12.2016 12:30:00
  • 17.12.2016 14:33:00
  • 18.12.2016 18:10:00

我试图将字符串值精确解析为DateTime对象,如下所示:

DateTime.ParseExact(dt, "dd.MM.yyyy H:mm:ss", CultureInfo.InvariantCulture)(dt是列表中的字符串值)

问题是我收到一条错误,说该字符串不是有效的DateTime ...

使用当前格式,列表中的第一个和第二个值可以正常工作,当它到达第三个&#39; boooom&#39;我收到了错误。

我的格式错过了哪些内容?

2 个答案:

答案 0 :(得分:4)

使用接受有效格式数组的DateTime.ParseExact重载:

string[] formats = { "dd.MM.yyyy H:mm:ss", "dd.MM.yyyy HH:mm:ss" };
var result = DateTime.ParseExact(dt, formats, CultureInfo.InvariantCulture, 0);

更新:正如其他人所说,H应该匹配一位数和两位数小时,所以还有其他事情正在发生。以下代码在我的系统(.NET 4.5.2)上成功运行:

string dt = "16.12.2016 12:30:00";
var result = DateTime.ParseExact(dt, "dd.MM.yyyy H:mm:ss", CultureInfo.InvariantCulture);

答案 1 :(得分:0)

我必须准确地解析使用的小时、分钟和秒,然后使用 ToString 方法转换为月、日和年格式

  $myStringDate=[Datetime]::ParseExact($item.myDateObject,'MM/dd/yyyy H:mm:ss',$null).ToString('MM/dd/yyyy')