ルビー:どのように私は、CSVファイルから2つの日付時刻指定の継続時間を計算するのですか?
質問
私はスタートが含まれている時刻と終了時刻CSVファイルの数を持っています。私は、ファイルを解析するためにFasterCSVを使用することができますが、私はRubyでデュレーションを取得するための最良の方法を知りません。ここに私のハッシュの値はCSVファイルの行ごとに生成されます。
start time: Mon Jul 20 18:25:17 -0400 2009
end time: Mon Jul 20 18:49:43 -0400 2009
解決
あなたは別の1つのDateTimeを減算することにより、時間を得ることができます。 DATE_TIMEコンバータ:あなたは、限り、あなたは含まれている場合FasterCSVからDateTimeオブジェクトを取得します。たとえばます:
FasterCSV.foreach(some_file, :converters => [:date_time]) do |row|
#blah
end
それとも、あなただけのDateTime#の解析を使用してそれらを自分で変換することができます。
そこから、あなたが得るために日#のday_fraction_to_time を使用することができます私はその日のほんの一部以外で作業しやすいと思い[hours, minutes, seconds, fraction_of_a_second]
を含む配列、ます。
あなたがそれらを表示する方法に応じて、<のhref = "https://stackoverflow.com/questions/1065320/in-rails-display-time-between-two-であなたを助ける情報は、おそらくありますこの質問での日付・イン・英語/ ">答え。これらの答えはRailsのためのものですが、あなたは常にRailsのから必要な部品が含まれ、あるいは単に彼らはそれを行う方法を確認する(Railsのドキュメントを参照してください)関数のソースを見ることができます。それはかなり自明です。
他のヒント
わかりませんこのためDateTimeクラスます:
require 'date'
d1 = DateTime.parse("Mon Jul 20 18:25:17 -0400 2009")
d2 = DateTime.parse("Mon Jul 21 18:25:17 -0400 2009")
puts "Duration is #{(d2-d1).to_f} days"