在Ruby On Rails中保存当前时间和日期

时间:2018-12-06 00:20:06

标签: ruby-on-rails

我正在尝试使用以下代码行将当前时间和日期保存在mysql数据库中:

DateTime.now

但是当我将其保存在数据库中然后进行查看时,我得到了:

2018-12-06 00:18:46

我认为时间不对,这会影响日期。 我该怎么解决?

1 个答案:

答案 0 :(得分:1)

默认情况下,Rails总是在将时间写入数据库或从数据库读取之前将时间转换为UTC,这没有任何问题。

您可以在应用程序初始化时更改此行为,例如,在/config/application/rb中:

config.time_zone = 'Atlantic Time (Canada)'
config.active_record.default_timezone = :local

如果您正在寻找一种存储记录创建/上次更新日期的方法,则可以使用时间戳记,它将自动存储您在时间和日期上更新/创建的记录。

在您的迁移文件中:

class CreateThings < ActiveRecord::Migration[5.0]
  def change
    create_table :things do |t|
      t.string :name
      t.text :description

      t.timestamps
    end
  end
end

否则,获取正确的本地时间的正确方法是

Time.zone.now

您可以使用

获取受支持的时区的完整列表。
ActiveSupport::TimeZone.zones_map(&:name)

Timezone docsa quick rundown中Ruby on Rails中的日期,时间和时区。