Rails:将 UTC 日期时间转换为另一个时区
在 Ruby/Rails 中,如何将 UTC 日期时间转换为另一个时区?
In Ruby/Rails, how do I convert a UTC DateTime to another time zone?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在 Ruby/Rails 中,如何将 UTC 日期时间转换为另一个时区?
In Ruby/Rails, how do I convert a UTC DateTime to another time zone?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
示例:
或者
您可以通过执行以下操作找到 ActiveSupport 时区的名称:
Example:
or just
You can find the names of the ActiveSupport time zones by doing:
如果
Time.zone
是您想要的时区,那么您可以使用@date.to_time.to_datetime
if
Time.zone
it's your desired time zone then you can use@date.to_time.to_datetime
在普通 ruby 中,仅
require 'date'
,使用new_offset
方法:使用 Mac OS X 10.13 上的标准 ruby 2.3.7 进行测试。
In plain ruby, with only
require 'date'
, use thenew_offset
method:Tested with ruby 2.3.7 that came standard on Mac OS X 10.13.
尝试使用 TimeZone 操作 ActiveSupport 的 TimeWithZone 对象。 ActiveSupport 还提供 in_time_zone 方法,用于将 UTC 时间转换为指定的 TimeZone 时区。麦基德的答案显示了代码。
Try ActiveSupport's TimeWithZone objects manipulated with TimeZone. ActiveSupport also provides the in_time_zone method for converting a UTC time to a specified TimeZone time zone. mckeed's answer shows the code.
以防万一,如果您正在处理 Rails 中的 ActiveRecord 对象。
使用
Time.use_zone
作为每个请求的基础时区可能是一个好主意,它会覆盖config.time_zone
中设置的默认时区我在 https://stackoverflow.com/a/25055692/542995
Just in case, if you are dealing with ActiveRecord object in Rails.
It might be a good idea to use
Time.use_zone
for a per request basis timezone that overrides the default timezone set inconfig.time_zone
More details I explain at https://stackoverflow.com/a/25055692/542995
我在 Rails 4 中使用 simple_form ,我刚刚添加了输入字段,就像
迁移一样
I'm using simple_form in Rails 4 and I just added the input field as
with the migration