- 概要
Rubyで終了日時から開始日時を減算し、処理結果をhour時間min分sec秒形式で出力する処理を作成。
開始時間と終了時間の差が1日以上ある場合と開始日時のほうが終了日時より大きい場合は不正とする。
※Rubyは今日始めたばかりなのでひどい実装の可能性大
- サンプル
#開始時間 timeFrom = Time.mktime(2012,1,15,15,50,10) #終了時間 timeTo = Time.mktime(2012,1,16,15,50,9) print("開始時刻:" , timeFrom, "\n") print("終了時刻:" , timeTo, "\n") # 比較結果(秒単位) dateDiff = timeTo - timeFrom case dateDiff # 比較結果 when 0..86399 diffHour = (dateDiff/3600).to_i diffMinute = ((dateDiff-(3600*diffHour))/60).to_i diffSec = (dateDiff-(60*(diffMinute))-(3600*(diffHour))).to_i print(diffHour, "時間" ,diffMinute, "分" , diffSec, "秒") # 比較結果(エラー) else print("時刻が不正です\n") end
- 出力結果
開始時刻:2012-01-15 15:50:10 +0900 終了時刻:2012-01-16 15:50:09 +0900 23時間59分59秒
■以下、時間を色々変えた場合
- 秒単位
#開始時間
timeFrom = Time.mktime(2012,1,15,15,50,10)
#終了時間
timeTo = Time.mktime(2012,1,15,15,50,11)
出力結果
開始時刻:2012-01-15 15:50:10 +0900 終了時刻:2012-01-15 15:50:11 +0900 0時間0分1秒
- 分単位
#開始時間
timeFrom = Time.mktime(2012,1,15,15,50,10)
#終了時間
timeTo = Time.mktime(2012,1,15,15,51,11)
出力結果
開始時刻:2012-01-15 15:50:10 +0900 終了時刻:2012-01-15 15:51:11 +0900 0時間1分1秒
- 不正日付1(マイナス)
#開始時間
timeFrom = Time.mktime(2012,1,15,15,50,10)
#終了時間
timeTo = Time.mktime(2012,1,15,15,50,9)
出力結果
開始時刻:2012-01-15 15:50:10 +0900 終了時刻:2012-01-15 15:50:09 +0900 時刻が不正です
- 不正日付1(1日以上)
#開始時間
timeFrom = Time.mktime(2012,1,15,15,50,10)
#終了時間
timeTo = Time.mktime(2012,1,16,15,50,10)
出力結果
開始時刻:2012-01-15 15:50:10 +0900 終了時刻:2012-01-16 15:50:10 +0900 時刻が不正です