我有一个模型,用户和现场这样expires_at创建Rails3中的应用:如何使用rails3将本地时区的日期保存到db?
t.column :expires_at, :timestamp
在我的数据库(PostgreSQL的),它具有类型:
timestamp without timezone
问题是,当我打电话:
@user.expires_at = Time.now
@user.save
它被保存到UTC时区的数据库(我的本地时间是UTC + 1:00,华沙),但我不想那样。我只想把我的本地时区的时间保存到数据库中(2011-03-30 01:29:01.766709,而不是2011-03-29 23:29:01.766709)
我可以使用rails3来实现吗?
小心!如果你有超过一个时区的用户,这会很快变得混乱。我更愿意将所有时间都保存为数据库中的UTC,并且只将它们转换为非UTC以便在客户端显示(您可以将时间从UTC转换为在用户操作系统中使用少量JavaScript设置的时区) 。祝你好运! – 2011-03-30 00:04:17
当我从用户输入数据库查询呢? ActiveRecord会自动将它转换为UTC? – 2011-03-30 00:10:34
这是一个很好的问题,但我怀疑它 - 它必须知道用户的时区才能够进行正确的转换。如果要将用户提供的日期存储为UTC,则可能必须将其转换为客户端(urgh)。我为我的客户端转换使用了[date.js](http://www.datejs.com/),但我只做了显示 - 我从未接受日期作为输入... – 2011-03-30 00:22:57