Если все, что вам нужно, это убедиться, что вы получаете экземпляр DateTime (или подкласса), тогда другие ответы "is is_a?
" - это то, что вам нужно.
Тем не менее, вы должны подумать о том, чтобы немного больше прощать ваши материалы. Что если кто-то вручит вам строку типа «2011-06-28 23:31:11»? Для большинства людей это DateTime, хотя Ruby думает, что это экземпляр String. Если вы хотите быть дружелюбнее, вы можете попробовать DateTime.parse
это:
begin
dt = dt.is_a?(DateTime) ? dt : DateTime.parse(dt)
rescue ArgumentError
# Do your failure stuff here
end
Или, если вы в Rails:
begin
dt = dt.to_datetime
rescue ArgumentError, NoMethodError
# Do your failure stuff here
end
Эти подходы дают вам большую гибкость, не теряя ничего в процессе. Прощайте свой вклад, но будьте строгими в своем выводе.
Для справки: в Rails 3 следующие методы имеют to_datetime
: