2012-04-19 3 views
0

Я просмотрел несколько вопросов StackOverflow, но ни один из них, похоже, не взламывает дело.Как сохранить время, но изменить часовой пояс?

Мое время, например, является:

2012-04-19 08:42:00 +0200 

Это то, что занесены через форму. Но все отображается относительно того, что часовой пояс это в так потому, что компьютер работает в UTC, на этот раз после того, как он сохранен выходит как:.

Wed, 18 Apr 2012 23:42:00 PDT -07:00 

Как сохранить то же время, но только изменить зону ?

ответ

1

У меня такие же требования. Пожалуйста, проверьте this и this link также

Альтернативно

"2012-04-19 08:42:00 +0200".to_time.strftime("%c").to_datetime 
2

Я думаю, что метод Time.use_zone может помочь вам. В приложении, в котором я работаю, мы хотели, чтобы время было интерпретировано в соответствии с часовым поясом текущего пользователя. Наш User класса был дан атрибутом time_zone, который просто действует ActiveSupport::TimeZone строки, и мы создали around_filter следующим образом:

class ApplicationController < ActionController::Base 

    around_filter :activate_user_time_zone 

    def activate_user_time_zone 
    return yield unless current_user # nothing to do if no user logged in 
    return yield unless current_user.time_zone && ActiveSupport::TimeZone[current_user.time_zone] # nothing to do if no user zone or zone is incorrect 
    Time.use_zone(ActiveSupport::TimeZone[current_user.time_zone]) do 
     yield 
    end 
end 

end 

В основном, это будет выполнять код в действии контроллера, как если бы это было в течение часовой пояс пользователя.

Смежные вопросы