[ruby-core:66931] [ruby-trunk - Bug #10614] strpdate and Leap Days

From: sawadatsuyoshi@...
Date: 2014-12-18 03:32:56 UTC
List: ruby-core #66931
Issue #10614 has been updated by Tsuyoshi Sawada.


`'02/29/2012'` clearly does not match `'%m/%d'`.

----------------------------------------
Bug #10614: strpdate and Leap Days
https://bugs.ruby-lang.org/issues/10614#change-50474

* Author: Corey Woodcox
* Status: Open
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
* ruby -v: ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-darwin14.0]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
I'm experiencing an issue parsing dates and leap days.

When the format string includes the year, everything works as expected:

~~~
>> Date.strptime('02/29/2012', '%m/%d/%Y')
=> #<Date: 2012-02-29 ((2455987j,0s,0n),+0s,2299161j)>
~~~

Parsing a date without a year assumes this year:

~~~
>> Date.strptime('01/01', '%m/%d')
=> #<Date: 2014-01-01 ((2456659j,0s,0n),+0s,2299161j)>
~~~

Here's my issue, parsing a leap day without a year assumes I mean this year, and this year is not a leap year:

~~~
>> Date.strptime('02/29/2012', '%m/%d')
ArgumentError: invalid date
~~~

Thinking about it now, I'm not sure what the expected behavior should be. Python assumes 1900 under the same circumstances, and it doesn't throw an exception.



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

In This Thread

Prev Next