如果我有时间对象:
t = Time.now
我想知道那个时间是上午还是下午,现在我能做到的唯一方法就是:
t.strftime("%p") == "PM"
现在,%p
正在从某事进行插值,对吗?还有其他方法可以达到吗?
我问,因为我正在做一些时间格式化我要显示的时间范围如下:
"9:00 AM - 5:00 PM"
"4:00 - 5:30 PM"
"10:15 - 11:45 AM"
现在我必须检查strftime
的字符串值,但我更喜欢这样写:
if start_time.am? && end_time.pm? || start_time.pm? && end_time.am?
...而不是我正在做的更冗长的strftime
字符串比较。
答案 0 :(得分:2)
根据http://www.ruby-doc.org/core-1.9.3/Time.html,我不相信有任何其他方式。你可以通过猴子补丁时间为你节省一些乏味的时间,但是:
class Time
def meridian
self.strftime('%p')
end
def am?
self.meridian == 'AM'
end
def pm?
self.meridian == 'PM'
end
end
答案 1 :(得分:1)
没有time.am?
那么好,但您可以改用time.hour < 12
。
答案 2 :(得分:0)
class Time
def am?
self.hour.in? (0..12)
end
def pm?
self.hour.in? (13..24)
end
end