[ruby-core:88819] [Ruby trunk Bug#14880] Time#localtime doesn't always seem to respect TZ

From: samuel@...
Date: 2018-09-03 09:07:53 UTC
List: ruby-core #88819
Issue #14880 has been updated by ioquatix (Samuel Williams).


nobu (Nobuyoshi Nakada) wrote:
> I feel it'd be better to accept a timezone object as `utc_offset` like [Feature #14850], than setting `ENV`.

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.


----------------------------------------
Bug #14880: Time#localtime doesn't always seem to respect TZ
https://bugs.ruby-lang.org/issues/14880#change-73864

* Author: ioquatix (Samuel Williams)
* Status: Closed
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: 
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
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.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next