日期时间格式为9/14/2016 19:31

时间:2018-06-18 06:56:29

标签: datetime f# .net-core

我正在做Richard Broida的F#课程。在一个讲座中,我应该解析一个CSV文档。除解析日期时间外,一切正常。我的本地文化设置是斯洛伐克语(sk-SK),我正在尝试解析以下日期时间字符串:

9/14/2016 19:31

我已经阅读了CSV文件,发现几个月,几天和几个小时都可以有一个或两个数字。年份总是有 4 数字,分钟总是有 2 数字。因此,日期时间10/7/2016 9:01也是有效的。

我创建了一个适配器功能:

let dateTimeParseAdapter format provider date = 
    DateTime.ParseExact(date, format, provider)

然后调用

dateTimeParseAdapter "M/d/yyyy h:mm" CultureInfo.InvariantCulture "9/14/2016 19:31"

但是我收到了一条异常消息

System.FormatException: String was not recognized as a valid DateTime.

我尝试将格式字符串调整为与单个日期中的位数完全匹配。但是,即使以下代码也会导致相同的错误消息。

dateTimeParseAdapter "M/dd/yyyy hh:mm" CultureInfo.InvariantCulture "9/14/2016 19:31"

为什么我收到异常消息?我应该更改CultureInfo设置吗?或者是否有预定义的日期时间格式来解析我的日期时间?

2 个答案:

答案 0 :(得分:7)

使用 24 小时格式时,您应使用HHH)而非h hh(适用于 12 小时格式)模式:

 format = @"M/d/yyyy H:mm";

答案 1 :(得分:4)

因为您使用24小时的价值,所以必须在几小时内投入资金。变化

 "M/dd/yyyy hh:mm"

 "M/dd/yyyy HH:mm"