a = '12'
このオブジェクトに時間値があるかどうかを確認したいと思います。私がやるとしましょうa.try(:to_time)
。これはを返しますArgumentError
。true
値がまたはfalse
応答を受信する時間値であるかどうかを確認できますか?
a = '12'
このオブジェクトに時間値があるかどうかを確認したいと思います。私がやるとしましょうa.try(:to_time)
。これはを返しますArgumentError
。true
値がまたはfalse
応答を受信する時間値であるかどうかを確認できますか?
respond_to?
オブジェクトがメソッドに応答するかどうかを確認するために使用できます。
a.respond_to?(:to_time)
編集
ArgumentError
前に逃したものを上げました。respond_to?
役立ちますNoMethodError
が、そうではありませんArgumentError
。
to_time
そのメソッドの引数の数と引数を知るには、の定義を確認する必要があります。
a = "12"
p a.is_a?(Time) #false
p a.class == String #true
p a.is_a?(Object) #true (a's class or superclass)
時間を解析するには、次を使用してみてください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
これを行うための組み込みメソッドがあるようには見えません。ただし、Stringモデルはいつでもオーバーロードできます。何かのようなもの -
class String
def to_time
begin
Time.parse(self)
rescue Exception => exception
return false
end
return true
end
end