DateTime.parse does not take into account the system timezone
DateTime.parse does not take into account the system timezone although Time.parse does take into account the system timezone.
irb(main):002:0> DateTime.parse('2011-10-10 10:00:00') => #<DateTime: 2011-10-10T10:00:00+00:00 ((2455845j,36000s,0n),+0s,2299161j)> irb(main):005:0> Time.parse('2011-10-10 10:00:00') => 2011-10-10 10:00:00 +0900
Are there any reasons that
DateTime.parse behaves like this?
Can this behavior be changed, or do we have to keep this behavior for lower version compatibility?
Updated by jeremyevans0 (Jeremy Evans) about 2 months ago
I do not think this is a bug. DateTime has always defaulted to UTC, not just in
DateTime.new.zone # => "+00:00" DateTime.strptime('2009', '%Y').zone # => "+00:00" DateTime.jd(2458000) # => "+00:00"
To switch to defaulting to local time for compatibility with
Time would be a huge break to backwards compatibility, and I don't think such a change is worthwhile. I think
DateTime mostly exists for backwards compatibility, since starting in Ruby 2.6,
Time can handle timezones (timezone handling was the last major advantage of