2

DateTime(現在は文字列として)を取得し、それをDateTimeオブジェクトに変換するメソッドがあります。例:

def foo(time)
  the_time = Time.parse(time)
  ...
end

など、

foo("2012-09-03")

DateTimeオブジェクトも解析できるようにしたいと思います。

foo(Time.now)

しかしTime.parse、私はそれに文字列を与えていないと不平を言います:

NoMethodError: undefined method `gsub!' for 2012-08-08 15:59:00 UTC:Time

文字列またはDateTimeオブジェクトからDateTimeオブジェクトを返すエレガントな(1行?)方法はありますか(ifステートメントの使用は避けたいと思います)

ありがとう

編集:コメントをありがとう-私はifステートメントを使用することに本当の嫌悪感はありません、私はただもっと良いものがあるかどうかを見ていました

4

2 に答える 2

5

ifステートメントなしでそれを行う1つの方法を次に示します。

def foo(time)
  the_time = Time.parse(time.to_s)
  # ...
end

ただし、エレガントなソリューションを探している場合は、日付の再解析がそのように見なされるとは思えません。なぜif悪い選択肢だと思いますか?これが私がそれを行う方法です:

def foo(time)
  the_time = time.respond_to?(:to_time) ? time.to_time : Time.parse(time.to_s)
  # ...
end
于 2012-09-04T14:16:06.237 に答える