我知道有很多宝石可以完成这项工作,但是我认为将整个宝石用于如此简单的任务实在是太过分了。
我发现js非常简单:
Intl.DateTimeFormat().resolvedOptions().timeZone
答案是一个类似于"Europe/Moscow"
的字符串。
我们可以轻松地将其保存到数据库
create_table :users do |t|
t.string :time_zone, default: "UTC"
...
end
并设置用户的时区,如:
# app/controllers/application_controller.rb
around_action :set_time_zone, if: :current_user
private
def set_time_zone(&block)
Time.use_zone(current_user.time_zone, &block)
end
所以我的[[question是:我错过了重要的事情(为什么使用这些宝石)还是可以像上面写的那样(没有任何宝石)做到这一点?
Intl.DateTimeFormat().resolvedOptions().timeZone
的权力)的规范直到2012年才开始引入,这是在JavaScript最初诞生几年之后的。]有点类似,在后端,Rails框架提供了自己的API,借助Rails的Time
包装器,您可以创建TZInfo
实例,并具有ActiveSupport::TimeZone
gem的更高的准确性和功能。您甚至都不会偏离Ruby中的习惯,只需在Rails的Time
上直观地调用TZInfo
和Time
方法即可。
您上面编写的代码在技术上依赖于gem。 Rails是一颗宝石!也许您要进行的描述是我们应该使用我们的语言和框架附带[ out获得新的库。这种差异并不像库的可靠性那么重要。这样您就不会丢失任何东西!那里只是一个丛林:)