【发布时间】:2013-12-06 16:23:26
【问题描述】:
具体来说,如果一个对象可以转换为 unix 时间戳,我想将其转换为 unix 时间戳。这样我就可以覆盖标准的日期/时间 JSON 格式,ruby 将其转换为 API 的 unix 时间戳(因为我们不想在电话端解析字符串)。而且,我有点想这样做一次,这样我就可以在我们任何使用日期/时间的对象中使用它(通过修改 as_json 的结果)。
似乎我目前必须处理日期、时间、日期时间(如果类型检查则由日期处理)和 ActiveSupport::TimeWithZone(来自 Rails)。但是,不想检查所有这些。
有更好的方法吗?
仅供参考,我尝试检查 respond_to?(:to_datetime) 这是不好的,因为 String 对此作出响应。并且 respond_to?(:year) 不好,因为 FixedNum 对此做出了回应。 :-P
【问题讨论】:
-
我想我真的可以检查 kind_of?(Date) 和 kind_of?(Time)...刚刚注意到 ActiveSupport::TimeWithZone 派生自 Time。嗯,在回答之前会等待看看是否其他人有更好的建议。 :)
-
在 ruby 中的日期/时间调用 to_i 将返回 unix 时间戳
-
是的,但是您可以在各种不是日期的对象上调用 to_i。我只想转换为日期类型对象的时间戳。在大多数语言中,我会检查它是否实现了某种日期接口(或响应专门用于获取时间戳的选择器)。
标签: ruby-on-rails ruby date unix datetime