Ruby中的日期时间比较

时间:2010-12-17 16:54:56

标签: ruby datetime

我有一个约会,假设是'2010-12-20'的航班起飞,有两次,例如'23:30'和'02:15'。

问题:我需要得到这两个日期的约会时间(yyyy-MM-dd HH:mm:ss,例如,2010-12-17 14:38:32),但我不知道第二次的一天(可以是离开的那一天,或下一次)。

我正在寻找Ruby on Rails中的最佳解决方案。在PHP中只会多次使用字符串拆分,但我相信,Rails通常会有更优雅的方式。

所以,这是我的伪代码,我想转向Ruby:

depart_time = '23:30'
arrive_time = '02:15'
depart_date = '2010-12-20'
arrive_date = (arrive.hour < depart.hour and arrive.hour < 5) ? depart_date + 1 : depart_date
# Final results
depart = depart_date + ' ' + depart_time
arrive = arrive_date + ' ' + arrive_time

我想找到在Ruby on Rails中实现它的最佳方法,而不是仅仅使用字符串。

1 个答案:

答案 0 :(得分:1)

这只是纯Ruby,与Rails无关:

require 'date'

depart_time = DateTime.strptime '23:30', '%H:%M'
arrive_time = DateTime.strptime '02:15', '%H:%M'
arrive_date = depart_date = Date.parse( '2010-12-20' )
arrive_date += 1 if arrive_time.hour < depart_time.hour and arrive_time.hour < 5

puts "#{depart_date} #{depart_time.strftime '%H:%M'}",
     "#{arrive_date} #{arrive_time.strftime '%H:%M'}"
#=> 2010-12-20 23:30
#=> 2010-12-21 02:15