如何将所有时间戳转换为Unix时间戳?

时间:2015-01-18 01:04:05

标签: ruby-on-rails ruby

我的iOS开发人员要求我将JSON结构中的所有时间戳都提供为Unix时间戳,作为自" 00:00:00协调世界时(UTC),星期四,1之后经过的秒数1970年1月",不计算闰秒。

看到我的所有数据都存储在服务器上的字符串中,我想创建一个方法,将所有时间戳转换为Unix时间戳作为整数。

换句话说,我需要转换:

{
  "created_at" => "2015-01-18T00:58:58.903Z", 
  "updated_at" => "2015-01-18T00:58:58.903Z", 
  "user_id" => 1, 
  "status_id" => 1
}

为:

{
  "created_at" => 1421542604, 
  "updated_at" => 1421542604, 
  "user_id" => 1, 
  "status_id" => 1
}

1 个答案:

答案 0 :(得分:2)

我编写了以下rspec,然后意识到我需要修改默认的as_json方法来执行此转换:

expect(response_json).to eq(
  {
    'created_at'    => user.created_at.as_json,
    'updated_at'    => user.updated_at.as_json,
    'user_id'       => user.user_id,
    'status_id'     => user.status_id
  }
)

然后我创建了/config/initializers/unix_timestamps.rb并且它有效:

class ActiveSupport::TimeWithZone
  def as_json
    self.to_time.to_i
  end
end