使用Heroku,我试图将一个地方的保存时间(打开和关闭)与当前时间进行比较,以确定要输出的内容。
代码:
def get_place_search_display(open_time, close_time)
open_time_formatted = open_time.strftime('%l:%M %p') if !open_time.nil?
close_time_formatted = close_time.strftime('%l:%M %p') if !close_time.nil?
current_time = Time.current #.strftime('%l:%M %p')
if open_time.nil? || close_time.nil?
"Closed today"
elsif current_time < open_time
"Opens at #{open_time} until #{close_time}"
elsif current_time >= open_time && current_time <= close_time
"Open #{open_time} - #{close_time}"
elsif current_time > close_time
"Closed at #{close_time} today"
else
"Open until #{close_time} today"
end
end
返回值示例:
开放时间:上午7:00
关闭时间:8:45 PM,2000-01-01 20:45:00 UTC
当前时间:6:35 PM,2014-09-07 18:35:36 -0700
返回:“今天在2000-01-01 20:45:00 UTC关闭”
使用这种逻辑,比较不起作用的任何想法?
答案 0 :(得分:1)
关注术语&#34;今天&#34;在您的输出字符串中,以及时间格式化方法中的'%l:%M %p'
,我假设您正在尝试比较没有日期信息的时间对象
然而在Ruby中,Time对象总是带有日期。但是你可以通过在比较之前将它们转换到同一天来实现这一点。
a = Time.current
=> Mon, 08 Sep 2014 02:30:44 UTC +00:00
b = Time.current.months_ago(1)
=> Fri, 08 Aug 2014 02:30:59 UTC +00:00
a > b
=> true
a2 = a.change(day:1, month:1, year:2000)
=> Sat, 01 Jan 2000 02:30:44 UTC +00:00
b2 = b.change(day:1, month:1, year:2000)
=> Sat, 01 Jan 2000 02:30:59 UTC +00:00
a2 > b2
=> false
希望它有所帮助。