1
a = '12'

このオブジェクトに時間値があるかどうかを確認したいと思います。私がやるとしましょうa.try(:to_time)。これはを返しますArgumentErrortrue値がまたはfalse応答を受信する時間値であるかどうかを確認できますか?

4

4 に答える 4

4

respond_to?オブジェクトがメソッドに応答するかどうかを確認するために使用できます。

a.respond_to?(:to_time)

編集

ArgumentError前に逃したものを上げました。respond_to?役立ちますNoMethodErrorが、そうではありませんArgumentError

to_timeそのメソッドの引数の数と引数を知るには、の定義を確認する必要があります。

于 2012-10-04T15:48:29.850 に答える
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)
于 2012-10-04T15:57:38.250 に答える
-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
于 2012-10-04T15:50:46.500 に答える
-2

これを行うための組み込みメソッドがあるようには見えません。ただし、Stringモデルはいつでもオーバーロードできます。何かのようなもの -

    class String
       def to_time
          begin
             Time.parse(self)
          rescue Exception => exception
             return false
          end
          return true
       end
    end
于 2012-10-04T15:51:28.277 に答える