a = '12'
我想检查这个对象是否有时间值。假设我做a.try(:to_time)
。这将返回ArgumentError
。我可以检查某个值是否是接收true
或false
响应的时间值吗?
答案 0 :(得分:4)
您可以使用respond_to?
检查对象是否响应方法。
a.respond_to?(:to_time)
修改
它提出了我之前错过的ArgumentError
。 respond_to?
帮助NoMethodError
,但不是ArgumentError
。
您应该查看to_time
的定义,以了解该方法有多少参数和参数。
答案 1 :(得分:3)
a = "12"
p a.is_a?(Time) #false
p a.class == String #true
p a.is_a?(Object) #true (a's class or superclass)
答案 2 :(得分:-1)
要解析时间,请尝试使用Time.parse
:
irb(main):002:0> Time.parse('12:00')
=> 2012-10-04 12:00:00 -0700
irb(main):003:0> Time.parse('the time is 12:00')
=> 2012-10-04 12:00:00 -0700
irb(main):005:0> Time.parse('jan 1, 1970 11:11')
=> 1970-01-01 11:11:00 -0700
请注意,这会无声地失败:
irb(main):004:0> Time.parse('12 noon')
=> 2012-10-12 00:00:00 -0700
答案 3 :(得分:-2)
似乎没有内置方法来执行此操作。但是你总是可以重载String模型。像 -
这样的东西 class String
def to_time
begin
Time.parse(self)
rescue Exception => exception
return false
end
return true
end
end