我正在使用CsvProvider来解析我从外部来源收到的CSV文件。文件的日期格式为dd / MM / yy。但是CsvProvider将其推断为MM / dd / yy并得出所有日期错误。
有什么办法可以将dateformat传递给CsvProvider?
我可以将日期读取为字符串,然后使用Seq.Map将其转换为Datetime(这是两个步骤)。
我试图找出我是否可以一步一步完成
示例
csv文件sample.csv具有如下数据
11/01/90
12/01/90
13/01/90
14/01/90
15/01/90
我正在使用下面的F#代码
type MyCsvProvider = CsvProvider<Sample= "sample.csv", HasHeaders=false, Schema="Date (date)">
MyCsvProvider.Load("sample.csv")
答案 0 :(得分:0)
CsvProvider
类型的提供程序无法显式指定解析日期的格式,因此,如果您使用某种完全非标准的格式,则只需将其读取为string
(这是CSV提供程序无法自动解析日期的推断),然后显式解析日期值。
也就是说,您可以指定Culture
参数,这样就可以解析在美国以外的国家/地区中常见的格式的日期。例如,您的日期格式可以很好地适应en-GB
的文化(在英国,您首先写日,然后是月,然后是年)。
在下面的小示例中,Test
属性被推断为DateTime
:
type A = CsvProvider<"""Test
11/01/90
12/01/90
13/01/90
14/01/90
15/01/90""",Culture="en-GB">
let r = A.GetSample().Rows |> Seq.head
r.Test