Ruby: 時間を秒に変換しますか? 質問する

Ruby: 時間を秒に変換しますか? 質問する

10:30 のような時間を秒数に変換するにはどうすればいいでしょうか? それを処理する Ruby 組み込み関数のようなものはありますか?

基本的には、真夜中 (00:00) からその日の特定の時間 (10:30 や 18:45 など) までの秒数を計算します。

ベストアンサー1

使用できますDateTime#parse文字列をDateTimeオブジェクトに変換し、時間を 3600 倍、分を 60 倍して秒数を取得します。

require 'date'

# DateTime.parse throws ArgumentError if it can't parse the string
if dt = DateTime.parse("10:30") rescue false 
  seconds = dt.hour * 3600 + dt.min * 60 #=> 37800
end

としてジョシュ・リーコメントで指摘されているように、Time#seconds_since_midnightActiveSupportをお持ちの場合:

require 'active_support'
Time.parse("10:30").seconds_since_midnight #=> 37800.0

おすすめ記事