Rails:使时间戳看起来像时间戳

时间:2015-02-17 13:51:45

标签: ruby-on-rails activerecord

我正在使用带有ActiveRecords的Ruby on Rails。它真的让我厌倦了所有这些数据类型,如DateTime,Time等。我在前端渲染所有与数据相关的东西,所以我在从DB中检索时间戳时只需要简单的int。我可以在代码中没有这么多to_int吗?

假设我有像

那样的迁移
class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :email, null: false
      t.string :crypted_password, null: false
      t.string :password_salt, null: false
      t.string :persistence_token, null: false

      t.timestamps null: false
    end
  end
end

然后我喜欢

<%= @user.created_at =>

我喜欢2015-02-11 14:11:04 UTC(因为它实际上是DateTime to_s)。虽然我只需要1423663864(所以我必须做像&lt;%= @ user.created_at.to_i =&gt;)的smth。所以它进行4(!)转换:

  1. DB 4字节int到DB字符串
  2. DB字符串到Ruby DateTime
  3. DateTime to int(第一步中的4个字节)
  4. Ruby int to Ruby string

3 个答案:

答案 0 :(得分:1)

你可以在config / initializers中创建一个文件,比如说... date_format.rb:

Date::DATE_FORMATS[:default] = "%d-%m-%Y"

然后,当您打印日期时,它将以您编写的格式显示。 P.D。:对不起我的英语。

答案 1 :(得分:1)

这会将日期的默认输出格式更改为unix时间戳表示形式:

Date::DATE_FORMATS[:default] = "%s"

根据strftime documentation

  

自Unix时代以来的秒数:
  %s - 自1970-01-01 00:00:00 UTC以来的秒数。

详细了解如何在rails here中处理datetimetimestamp类型(在答案的最后)

答案 2 :(得分:0)

在ruby中,您可以在Date / Time / DateTime对象上调用to_ito_f,以获得整数或浮点格式的“自纪元以来的秒数”。