我希望能够在生成CSV输出时更改CSV使用的日期和时间格式。例如,我希望它生成" 1/30/2004"。
,而不是生成" 2004-1-30"。我该怎么做?
这是一个完整的示例:
require 'csv'
require 'date'
str = <<_
2004-1-30,foo
2004-11-20,bar
_
File.write('a',str)
CSV::Converters[:cdate] = lambda do |s|
begin
Date.strptime(s,"%Y-%m-%d").strftime("%-m/%d/%Y")
rescue ArgumentError
s
end
end
CSV.foreach('a',:converters => :cdate) do |row|
p row
end
# >> ["1/30/2004", "foo"]
# >> ["11/20/2004", "bar"]
查看Converters
的文档。
来自转换器
Hash
和/或lambdas
的名称数组自定义转换。单个转换器不必在数组中。所有内置转换器在转换之前尝试将其转码字段到UTF-8。如果数据无法转码,则转换将失败,而将字段保持不变。