我正在从 Rails 3.2 中的 CSV 导入数据并将其保存到 mongodb 集合中,除日期字段外一切正常。导入的日期格式为 DD/MM/YYY。请问如何将导入的日期转换为 YYYY-MM-DD?
谢谢
我正在从 Rails 3.2 中的 CSV 导入数据并将其保存到 mongodb 集合中,除日期字段外一切正常。导入的日期格式为 DD/MM/YYY。请问如何将导入的日期转换为 YYYY-MM-DD?
谢谢
您可以像这样使用日期解析:
Date.strptime('01/02/2003', '%d/%m/%Y').to_s #=> "2003-02-01"
Date.strptime
Date
从给定格式的字符串创建对象
Date#to_s
以 ISO 8601 格式返回它(即 YYYY-MM-DD)
但这取决于你的 CSV 有多大——这会创建一堆中间Date
对象,这些对象会比(有点难看的)字符串索引方法慢一点:
def reformat_date(date)
"#{date[6..9]}-#{date[3..4]}-#{date[0..1]}"
end
reformat_date('01/02/2003') #=> "2003-02-01"
更新
我很好奇,所以我运行了一些快速基准测试——日期解析方法比字符串方法慢大约 2.7 倍(5.289 秒对 1.981 秒进行一百万次转换,Ruby 1.9.3/Windows)。YMMV。
你可能需要
require 'date'
然后使用以下语句解析日期:
d = Date.strptime('09/10/2012', '%d/%m/%Y')
使用以下示例将返回正确的格式:
d.year #=> 2012
d.mon #=> 10
d.day #=> 9
d.strftime('%Y/%m/%d') #=> "2012/10/09"
然后将其保存到数据库中。不过,我对 mongodb 并不熟悉,但我相信你知道该怎么做。
有关日期解析的更多信息,您应该访问http://www.ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html。