stu*_*ckj 7 ruby unix datetime ruby-on-rails date
具体来说,如果一个对象可以转换为unix时间戳,我想将其转换为unix时间戳.这是我可以覆盖ruby用于将其转换为API的unix时间戳的标准日期/时间JSON格式(因为我们不想解析字符串电话端).而且,我有点想这样做,所以我可以在任何使用日期/时间的对象中使用它(通过修改as_json的结果).
好像我目前要处理Date,Time,DateTime(由Date进行类型检查处理)和ActiveSupport :: TimeWithZone(来自Rails).但是,不想要检查所有这些.
有更好的方法吗?
仅供参考,我试过检查respond_to?(:to_datetime),这是不好的,因为String响应了那个.并且respond_to?(:year)这是不好的,因为FixedNum会对此作出回应.:-P
而不是使用 respond_to?
你为什么不这样做:
def date_or_time?(obj)
obj.kind_of?(Date) || obj.kind_of?(Time)
end
[19] pry(main)> a = Date.new
=> #<Date: -4712-01-01 ((0j,0s,0n),+0s,2299161j)>
[20] pry(main)> date_or_time? a
=> true
[21] pry(main)> b = DateTime.new
=> #<DateTime: -4712-01-01T00:00:00+00:00 ((0j,0s,0n),+0s,2299161j)>
[22] pry(main)> date_or_time? b
=> true
[23] pry(main)> c = Time.new
=> 2013-12-06 10:44:57 -0600
[24] pry(main)> date_or_time? c
=> true
Run Code Online (Sandbox Code Playgroud)