这个Ruby函数在做什么?

Bla*_*man 6 ruby ruby-on-rails

我对如何返回感到困惑:

def utc2user(t)
  ENV["TZ"] = current_user.time_zone_name 
  res = t.getlocal 
  ENV["TZ"] = "UTC"
  res
end
Run Code Online (Sandbox Code Playgroud)

它首先设置ENV变量,然后将'res'设置为本地值,然后重新分配ENV变量,然后返回res?

我不确定我是否理解这是如何从UTC转换到用户时区的?

Chu*_*ebs 7

第一行是将环境时区变量设置为用户的时区,以便res在该用户的正确时间内获取值.如果没有将其设置为用户,则时间仍为UTC.

然后它将环境变量设置回UTC时间,我假设它是应用程序的默认值.

然后它返回res.