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倍遅くなりました(100万回の変換で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にアクセスしてください。