我试过如下:
PRIMARY KEY((keyA, year), keyC, keyB)
但它正在给DateTime.ParseExact("Feb520161000PM",
"MMMdyyyyhhmmtt", CultureInfo.InvariantCulture)
。
有趣的是
FormatException
这也是格式例外。
答案 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表示从1
到31
的数字,因此此说明符会在您的字符串中显示52
,不是只是{{1} }。这就是您的代码抛出5
。
正如您所看到的,您的字符串格式无法解析,除非您使用它进行一些字符串操作。
在这种情况下,.NET Team suggests要么使用两个数字形式,如FormatException
,要么为您的日期和时间值插入分隔符。
您可以创建一个自定义方法,解析此05
格式,仅 解析此类格式化字符串,如;
MMMdyyyyhhmmtt