DateTimeオブジェクトと一定の時間が与えられているので、指定したDateTimeオブジェクトの次の固定時間を取得します。例えばRuby DateTime:次の午後5時15分(似たようなもの)取得
、2016年3月14日の日、午後4時、および午後5時15分の時間を与えられ、私は2016年3月14日午後5時15分を返すようにしたいです。
はしかし、2016年3月14日の日、午後6時、および午後5時15分の時間が与えられ、私はそれが次の出現なので、3月15日、2016、午後5時15分を返すようにしたいです。
これまでのところ、私はこのコードを書いている:
# Given fixed_time and date_time
new_time = date_time
if fixed_time.utc.strftime("%H%M%S%N") >= date_time.utc.strftime("%H%M%S%N")
new_time = DateTime.new(
date_time.year,
date_time.month,
date_time.day,
fixed_time.hour,
fixed_time.min,
fixed_time.sec
)
else
next_day = date_time.beginning_of_day + 1.day
new_time = DateTime.new(
next_day.year,
next_day.month,
next_day.day,
fixed_time.hour,
fixed_time.min,
fixed_time.sec
)
end
# Return new_time
それは動作しますが、より良い方法はありますか?
ありがとうございます!これは、アプローチが同じではあるが、機能をより良く見せるようにします。私がより良いアプローチで答えを得なければ、私は確かにあなたの答えを受け入れられた答えとしてマークします。 – shashwat
@shashwatあなたがより良いアプローチを見つけられたかどうかを確認してください。 –