我从Rails 3.2中的CSV导入数据并将其保存到mongodb集合,除了日期字段外,一切正常。导入的日期格式为DD / MM / YYY。请问如何将导入的日期转换为YYYY-MM-DD?
由于
答案 0 :(得分:3)
您可以使用这样的日期解析:
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.289s vs 1.981s,Ruby 1.9.3 / Windows)。 YMMV。
答案 1 :(得分:1)
您可能需要
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。