Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 时区到当前时间_Ruby On Rails_Ruby_Timezone - Fatal编程技术网

Ruby on rails 时区到当前时间

Ruby on rails 时区到当前时间,ruby-on-rails,ruby,timezone,Ruby On Rails,Ruby,Timezone,用户模型有时区,其中存储有“太平洋时间(美国和加拿大)” 情景: 1.当前用户居住在日本时区 2.当前用户正在查看居住在“太平洋时间(美国和加拿大)”的John的个人资料 3.在John的个人资料中,我需要显示当地时间上午10:01的“太平洋时间(美国和加拿大)” 我做了什么? ActiveSupport::TimeZone.new(@user.time_zone)。现在返回类似于2011-09-21 10:01:56 UTC的值 问题: 1.如何将此转换为上午10:01? 2.为什么是UTC

用户模型有时区,其中存储有“太平洋时间(美国和加拿大)”

情景: 1.当前用户居住在日本时区 2.当前用户正在查看居住在“太平洋时间(美国和加拿大)”的John的个人资料 3.在John的个人资料中,我需要显示当地时间上午10:01的“太平洋时间(美国和加拿大)”

我做了什么? ActiveSupport::TimeZone.new(@user.time_zone)。现在返回类似于2011-09-21 10:01:56 UTC的值

问题: 1.如何将此转换为上午10:01? 2.为什么是UTC


请帮助设置时区,您需要使用

Time.zone= @user.time_zone
您可能需要在
application.rb中的:before_filter中设置此选项

OTOH,您可以对块使用
use\u zone
方法

Time.use_zone(@user.time_zone) do
  #.... This code will run as if you were in @user.time_zone
end

在您的用户控制器中,尝试如下smth:

def show
  @user = find(params[:id])
  Time.zone = @user.time_zone
end
要更改格式,请执行以下操作:

 Time.now.strftime("at %I:%M%p") 
你可以用这个

Time.zone = 'Pacific Time (US & Canada)'
获取当地时间

Time.zone.now      #=> Wed, 21 Sep 2011 02:25:08 PDT -07:00
上午10点到下午10点

Time.zone.now.strftime("%I:%M %p")   #=> 02:25 AM 

处理时间的理想方法是在后端以UTC格式保存数据,这将简化转换过程

正如Chandra Patni上面提到的,您可以使用这些方法进行转换

要以格式化字符串显示时间对象,可以使用rails strftime方法