用户模型有time_zone,存储说“太平洋时间(美国和加拿大)”。
方案: 1. Current_user生活在日本时区 2. Current_user正在查看居住在“太平洋时间(美国和加拿大)”的约翰的个人资料 3.在John的个人资料中,我需要在“太平洋时间(美国和加拿大)”显示当地时间,时间为上午10:01
我做了什么? ActiveSupport :: TimeZone.new(@ user.time_zone)。现在返回类似2011-09-21 10:01:56 UTC的内容
问题: 1.如何将此转换为上午10:01? 2.为什么是UTC?
请帮忙
答案 0 :(得分:1)
要设置TimeZone,您需要使用
Time.zone= @user.time_zone
您可能需要在application.rb
OTOH,你可以使用use_zone
方法和块
Time.use_zone(@user.time_zone) do
#.... This code will run as if you were in @user.time_zone
end
答案 1 :(得分:1)
您可以使用此
Time.zone = 'Pacific Time (US & Canada)'
获取当地时间
Time.zone.now #=> Wed, 21 Sep 2011 02:25:08 PDT -07:00
上午10:00 /下午
Time.zone.now.strftime("%I:%M %p") #=> 02:25 AM
答案 2 :(得分:0)
在用户控制器中尝试使用这样的smth:
def show
@user = find(params[:id])
Time.zone = @user.time_zone
end
更改格式:
Time.now.strftime("at %I:%M%p")
答案 3 :(得分:0)
处理时间的理想方法是在后端保存UTC格式的数据,这将使转换过程变得简单。
正如Chandra Patni上面提到的,你可以使用这些方法进行转换。
要在格式化字符串中显示时间对象,您可以使用rails strftime方法http://apidock.com/rails/ActiveSupport/TimeWithZone/strftime