Time#localtime doesn't always seem to respect TZ
In the first case, calling
#localtime doesn't change the utc_offset.
$ TZ=UTC ruby -e 'ENV["TZ"]="Pacific/Auckland"; puts t=Time.new; ENV["TZ"]="UTC"; puts t.localtime' 2018-06-29 16:21:36 +1200 2018-06-29 16:21:36 +1200 $ TZ=UTC ruby -e 'ENV["TZ"]="Pacific/Auckland"; puts t=Time.new; ENV["TZ"]="UTC"; puts Time.new(t.year, t.month, t.day, t.hour, t.min, t.sec, t.utc_offset).localtime' 2018-06-29 16:23:08 +1200 2018-06-29 04:23:08 +0000
In the second case, by creating new time, calling
#localtime works as expected.
It seems like once a time instance is "localtime", calling
#localtime a 2nd time does not have any effect.
Updated by ioquatix (Samuel Williams) over 1 year ago
nobu (Nobuyoshi Nakada) wrote:
I feel it'd be better to accept a timezone object as
utc_offsetlike [Feature #14850], than setting
I completely agree but the problem is how to compute utc offset for a given time and timezone.
Right now using TZ is the only way to do it.