sha*_*wat 5 ruby time datetime ruby-on-rails ruby-on-rails-4
因此,给定DateTime对象和固定时间,我想在给定的DateTime对象之后获得下一次固定时间的出现.
例如,鉴于2016年3月14日,下午4:00和下午5:15的时间,我想在2016年3月14日下午5:15返回.
但是,鉴于2016年3月14日,下午6:00和下午5:15的时间,我想要返回2016年3月15日下午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
Run Code Online (Sandbox Code Playgroud)
它有效,但有更好的方法吗?
我只需要构建一次新的日期时间,如果需要,可以添加1天:
# Given fixed_time and date_time
new_date_time = DateTime.new(
date_time.year,
date_time.month,
date_time.day,
fixed_time.hour,
fixed_time.min,
fixed_time.sec
)
# add 1 day if new date prior to the given date
new_date_time += 1.day if new_date_time < date_time
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
70 次 |
最近记录: |