ruby-on-rails - 使用特定时区保存 Rails 记录

标签 ruby-on-rails timezone

如何使用自己的特定时区保存柏林的事件,并使用不同的时区保存蒂华纳的下一个事件?

要求用户为事件选择一个城市,例如作为来源+02:00。

我想收到这样的时间码:

eventstart = "2011-07-22T18:00:00+02:00"

您将如何创建该表单?

更新:

出于多种原因,实现保存为标准 UTC 是可以的。因此,现在我正在更改 View 中的时间字符串,以根据用户的本地时间为 eventstart 显示 *distance_to_time_in_words*。

蒂华纳的事件,从柏林时间观看:
old_zone = Time.zone
#=> "Berlin"
Time.zone = "Tijuana"
t = Time.zone.parse(eventstart.to_s[0..-7])
#=> 2011-07-22 18:00:00 +08:00
Time.zone = old_zone
#=> "Berlin"
distance_of_time_in_words(Time.now.in_time_zone, t)
#=> "9 hours"

麻烦,但现在有效。欢迎改进意见!

最佳答案

添加 time_zone列到您的数据库并使用 time_zone_select在您的表单中让用户选择 time_zone他正在为此创建事件。

在模型中,您可以将日期时间转换为特定于区域的日期时间并将 utc 存储在数据库中。您可以使用如下所示的助手

def local_time(date)
  Time.use_zone(self.time_zone) do
    Time.zone.at(date.to_i)
  end
end

关于ruby-on-rails - 使用特定时区保存 Rails 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6792856/

相关文章:

ruby-on-rails - 关于迁移 : undefined method `to_sym' for nil:NilClass

ruby-on-rails - 在 Ubuntu/Monit 中将 Mailman 脚本作为服务运行

javascript - 如何模拟浏览器的时区?

postgresql - 根据单独的时区列转换 UTC - Postgres

Java每天同一时间向不同时区发送邮件

ruby-on-rails - Rails ActiveRecord 不将时间转换为 UTC,而是将未转换的时间保存为 UTC

php - 有什么是 PHP with CodeIgniter 可以做而 Ruby on Rails 3 不能做的吗?

ruby-on-rails - 如何使用 Ransack 别名

javascript - C# - Asp.Net MVC 中的时区问题

mysql - 使用 Spree commerce 将 Capistrano 部署到 Ubuntu 服务器