[ruby-core:104666] [Ruby master Feature#10473] Change Date#to_datetime to use local time
From:
merch-redmine@...
Date:
2021-07-23 19:08:56 UTC
List:
ruby-core #104666
Issue #10473 has been updated by jeremyevans0 (Jeremy Evans).
Backport deleted (2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN)
Subject changed from Date.to_datetime.to_time != Date.to_time to Change Date#to_datetime to use local time
Tracker changed from Bug to Feature
I don't think this is a bug. `Time` defaults to local time, and `DateTime` to UTC:
```ruby
Time.parse('2021-07-23')
# => 2021-07-23 00:00:00 -0700
DateTime.parse('2021-07-23')
#<DateTime: 2021-07-23T00:00:00+00:00 ((2459419j,0s,0n),+0s,2299161j)>
```
I think `Date#to_time` and `Date#to_datetime` should continue to reflect `Time` and `DateTime` default timezone behavior.
Changing `Date#to_datetime` to use the local time would change the result of the following case:
```ruby
DateTime.parse(d.to_s) == d.to_datetime
```
We should only make this change if we change `DateTime` generally to use local time and not UTC, and I don't think it makes sense to do that. The cost from a backwards compatibility perspective would be very high, and considering `DateTime` is basically only for backwards compatibility, the benefit seems quite minor in comparison.
One possibility for supporting this in a backwards compatible manner is a keyword for `Date#to_datetime` (and potentially `Date#to_time`) to specify the timezone to use.
----------------------------------------
Feature #10473: Change Date#to_datetime to use local time
https://bugs.ruby-lang.org/issues/10473#change-92978
* Author: lojack (Jack Lowe)
* Status: Open
* Priority: Normal
----------------------------------------
Date.new(2014,1,1).to_datetime.to_time.utc.to_s
=> "2014-01-01 00:00:00 UTC"
Date.new(2014,1,1).to_time.utc.to_s
=> "2014-01-01 05:00:00 UTC"
--
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>