Bee*_*ice 15 ruby-on-rails ruby-on-rails-3
有一段时间我试图了解这个时区时间是如何工作的,我有一个问题:
今天在我的国家,我们处于夏令时(GMT-2).因此,我的应用程序的用户输入时间,如上午11:00并发布表单.据我所知,rails会将这个日期转换为UTC并保存在数据库中(在我的情况下为mysql),如:01:00 PM UTC.
当我恢复该记录时,我不得不转换为当地时间来显示.好?
我的问题是,让我们假设这个日期/时间表示我的国家从夏季退出(GMT-3)后的日期/时间.Rails将节省时间01:00 PM?今天,在夏令时,当地时间怎么样?而在未来,这个当地时间将如何?
基本上,我总是需要在上午11:00向用户显示.
谢谢.
Tom*_*son 14
有几个时区可以发挥作用:操作系统(或可能是用户帐户)默认设置,数据库服务器,Rails environment.rb.
关键是要确保所有日期都以UTC时区存储,然后以当地时区显示.听起来你正在这样做.
所以你的问题似乎归结为"如果它是白天时间,我想要抵消-3小时,否则抵消-2小时".Rails时间扩展可让您确定当前的偏移量Time.zone.now.utc_offset,并Time#dst?告诉您它是否为夏令时,这两个时间可以有条件地减去额外的小时(3600秒).
7 个月后你问,但也许skip_time_zone_conversion_for_attributes=会有所帮助 - 它告诉 AcitveRecord 不要在存储或检索时转换时区。请参阅ActiveRecord Timestamp,其中显示了示例:
class Topic < ActiveRecord::Base
self.skip_time_zone_conversion_for_attributes = [:written_on]
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11062 次 |
| 最近记录: |