[ruby-core:96379] [Ruby master Bug#16440] Date range inclusion behaviors are inconsistent

[email protected]
Newsgroups gmane.comp.lang.ruby.core
Message-ID <redmine.journal-83300.20191220175516.88759a878281fe99@ruby-lang.org>
Issue #16440 has been updated by zverok (Victor Shepelev).


`Range#include?` works as `#to_a.include?`. E.g. this:
```ruby
(may1..may31).include? noon_of_may3
# => false 
```
Is equivalent to this:
```ruby
dates = (may1..may31).to_a # => each Date between May 1 and 31
dates.include? noon_of_may3
# => false 
```
What works as you expect (compare value with range begin and end) is `Range#cover?`:
```ruby
(may1..may31).cover? noon_of_may3
# => true 
```

(To make things a bit more complicated, there is a special reimplementation for numbers, so `(1...2).include?(1.5)` is `true`.)

----------------------------------------
Bug #16440: Date range inclusion behaviors are inconsistent
https://bugs.ruby-lang.org/issues/16440#change-83300

* Author: st0012 (Stan Lo)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin19]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
It's weird that a Date range can include Time and DateTime objects that were converted from a Date object. But it can't include a newly generated DateTime object. For example:

```
may1 = Date.parse("2019-05-01")
may3 = Date.parse("2019-05-03")
noon_of_may3 = DateTime.parse("2019-05-03 12:00")
may31 = Date.parse("2019-05-31")

(may1..may31).include? may3 # => True
(may1..may31).include? may3.to_time # => True
(may1..may31).include? may3.to_datetime # => True
(may1..may31).include? noon_of_may3 # => False
```

Shouldn't the last case return `true` as well? 

Related Rails issue: https://github.com/rails/rails/issues/36175



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

Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.