如何将MMMdyyyyhhmmtt格式的日期时间字符串转换为datetime对象?

时间:2016-02-05 17:15:49

标签: c# datetime

我试过如下:

PRIMARY KEY((keyA, year), keyC, keyB)

但它正在给DateTime.ParseExact("Feb520161000PM", "MMMdyyyyhhmmtt", CultureInfo.InvariantCulture)

有趣的是

FormatException

这也是格式例外。

2 个答案:

答案 0 :(得分:4)

这种格式不能通过常规解析从左到右解析 - 你需要自定义代码从右到左解析值,而不是你想要最左边的数字是可变宽度(" Feb111111111PM")。

如果可能 - 将格式更改为具有固定宽度字段的格式(最好是ISO8601)。否则手动拆分字符串并从结果部分构造日期(时间部分本身可以正常工作,所以只需要手动解析日期部分)。

其他一些方法和信息可以在关于时间的类似帖子中找到 - DateTime.ParseExact - how to parse single- and double-digit hours with same format string?

答案 1 :(得分:3)

Alexei's answer是对的,如果你让我,我想解释一下......

您认为5应与d说明符匹配,对吧?但这不是DateTime.ParseExact的工作方式under the hood

由于The "d" custom format specifier表示从131的数字,因此此说明符会在您的字符串中显示52不是只是{{1} }。这就是您的代码抛出5

的原因

正如您所看到的,您的字符串格式无法解析,除非您使用它进行一些字符串操作。

在这种情况下,.NET Team suggests要么使用两个数字形式,如FormatException,要么为您的日期和时间值插入分隔符。

您可以创建一个自定义方法,解析此05格式,仅 解析此类格式化字符串,如;

MMMdyyyyhhmmtt