时区到当前时间



用户模型有time_zone,它存储的是"Pacific Time (US &加拿大)"。

场景:1. Current_user居住在日本时区2. Current_user正在查看生活在"太平洋时间(美国)"的John的个人资料。加拿大)"3.在John的个人资料中,我需要显示当地时间为"太平洋时间(US & &;as 10:01 am

我做了什么?ActiveSupport这样::TimeZone.new (@user.time_zone)。现在返回如下内容2011-09-21 10:01:56 UTC

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

请帮忙

要设置TimeZone,需要使用

Time.zone= @user.time_zone

您可以在application.rb

中的:before_filter中设置它。

OTOH,您可以使用use_zone方法与块

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

你可以使用

Time.zone = 'Pacific Time (US & Canada)'

获取本地时间

Time.zone.now      #=> Wed, 21 Sep 2011 02:25:08 PDT -07:00

得到10:00 am/pm

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

在您的用户控制器中尝试这样做:

def show
  @user = find(params[:id])
  Time.zone = @user.time_zone
end

更改格式:

 Time.now.strftime("at %I:%M%p") 

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

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

要以格式化字符串显示时间对象,您可以使用rails的strftime方法http://apidock.com/rails/ActiveSupport/TimeWithZone/strftime

相关内容

  • 没有找到相关文章

最新更新