Issue #11984 has been updated by jeremyevans0 (Jeremy Evans).

Status changed from Open to Rejected

This isn't a bug.  `DateTime.parse` assume the string you are passing in has some date related information in it, and tries the best it can to find something.  In this case, it guesses that the first four digits are the year and the last three are the day of the year.  The non-digits in this case are ignored.

```ruby
DateTime._parse('fg4534253dd')
# => {:year=>4534, :yday=>253}

DateTime._parse('4534253')
# => {:year=>4534, :yday=>253}
```

----------------------------------------
Bug #11984: DateTime.parse can parse invalid datetime string
https://bugs.ruby-lang.org/issues/11984#change-78930

* Author: lanscene (jarry xu)
* Status: Rejected
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux] and ruby 2.0.0p645 (2015-04-13 revision 50299) [universal.x86_64-darwin15]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
It seems if you pass a string which begins with 2 alphabets and following is 7 numerics, it can be parsed as DateTime, as follows 

irb(main):002:0> require 'time'
irb(main):008:0> dt0 = DateTime.parse('fg4534253dd')
=> #<DateTime: 4534-09-10T00:00:00+00:00 ((3377322j,0s,0n),+0s,2299161j)>
irb(main):009:0> dt0 = DateTime.parse('fg4534253')
=> #<DateTime: 4534-09-10T00:00:00+00:00 ((3377322j,0s,0n),+0s,2299161j)>
irb(main):010:0> DateTime.parse('gg1233234')
=> #<DateTime: 1233-08-22T00:00:00+00:00 ((2171645j,0s,0n),+0s,2299161j)>
irb(main):011:0> DateTime.parse('gg1233234dd')
=> #<DateTime: 1233-08-22T00:00:00+00:00 ((2171645j,0s,0n),+0s,2299161j)>



-- 
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>