2010-12-10 2 views
6

Я запутался, как это возвращает:Что это за рубиновая функция?

def utc2user(t) 
    ENV["TZ"] = current_user.time_zone_name 
    res = t.getlocal 
    ENV["TZ"] = "UTC" 
    res 
end 

Он первый устанавливает переменную ENV, затем устанавливает «Рез» на местное значение, а затем вновь assignes переменной ENV, а затем возвращается Рез?

Не уверен, что я понимаю, как это происходит от UTC к часовому поясу пользователя?

+0

Дополнительная информация: http://wiki.rubyonrails.org/howtos/time-zones – Zabba 2010-12-10 17:17:56

ответ

7

Первая строка задает переменную временного пояса окружающей среды в часовом поясе пользователя, чтобы получить значение res в правильное время для этого пользователя. Если он не установил его пользователю, время все равно будет в UTC.

Затем он устанавливает переменную окружения в UTC, что, я полагаю, является стандартным для приложения.

Затем он возвращает res.

2

Он возвращает время в соответствии с именем часового пояса, указанным current_user.time_zone_name, путем вызова getlocal на переданном Time объекте.

Это сбрасывает текущий часовой пояс для UTC и возвращает Time объект, возвращаемый из getlocalво время такого вызова (то есть, когда временная зона окружающей среды было то, что временная зона пользователя находится).

2

Эта функция принимает время в качестве входного сигнала, передает пользовательский часовой пояс на TZ, так что, когда метод getlocal называется, он фактически получает время, основанное на пользовательском локальном часовом поясе и не в UTC. Затем он возвращает обратно переменную envt TZ обратно в UTC и фактически возвращает локальный часовой пояс пользователей в последней строке.

4

getlocal метод использует ENV [ «TZ»], так что это просто немного потанцевать временно установить его, использовать его, а затем положить его обратно.

Хотя в этом случае его «вернут» на «UTC», а не то, что было раньше, что кажется немного сомнительным. И есть метод in_time_zone для этого, в любом случае!

+0

Код представляет собой образец из книги Rails Recipes. – Zabba 2010-12-10 17:16:50

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