Rails:使时间戳显示为时间戳。

16 浏览
0 Comments

Rails:使时间戳显示为时间戳。

我正在使用Ruby on Rails和ActiveRecords。实际上,所有这些数据类型(如DateTime、Time等)让我感到恶心。我在前端渲染所有与数据相关的内容,所以当从数据库检索时间戳时,我只需要简单的整数。我能在我的代码中不使用太多的`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(所以我必须做类似于<%= @user.created_at.to_i =>的操作)。所以这做了4次转换:

1. 将数据库的4字节整数转为数据库字符串

2. 将数据库字符串转为Ruby的DateTime

3. 将DateTime转为整数(第一步中的4字节)

4. 将Ruby整数转为Ruby字符串

0
0 Comments

Rails中的默认日期输出格式是以Unix时间戳表示的,如果想要修改为其他格式,可以通过以下代码实现:

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

根据strftime文档的说明,%s代表自1970年01月01日00:00:00 UTC以来的秒数,即Unix时间戳。

关于Rails中如何处理datetime和timestamp类型的详细信息,可以在这个答案的末尾找到:点击这里

0
0 Comments

问题出现的原因是在Ruby中,可以通过调用to_i或to_f方法来获取Date/Time/DateTime对象的"自纪元以来的秒数"值,以整数或浮点数格式表示。

解决方法是使用strftime方法来将时间戳转换为指定格式的字符串。在Rails中,可以使用strftime方法来格式化时间戳。

以下是将时间戳格式化为指定格式的示例代码:

timestamp = Time.now.to_i
formatted_timestamp = Time.at(timestamp).strftime("%Y-%m-%d %H:%M:%S")
puts formatted_timestamp

上述代码将当前时间戳格式化为"YYYY-MM-DD HH:MM:SS"的字符串格式,并输出结果。

通过使用strftime方法,我们可以根据需要将时间戳转换为各种自定义的日期和时间格式。

0
0 Comments

问题的出现原因:Rails默认的时间戳格式不符合需求,需要将时间戳的格式改为指定格式。

解决方法:在config/initializers目录下创建一个名为date_format.rb的文件,并在文件中添加如下代码:

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

然后,当打印日期时,将以你编写的格式显示。

备注:这里提供的解决方法只是更改了Rails默认的时间戳格式,并没有涉及到其他的数据类型和转换。

0