DateTime.jd raises 'invalid fraction' when called with more than one argument
Since trunk revision 31862, the DateTime.jd function raises an ArgumentError with message 'invalid fraction' when it is called with more than one argument. For example,
DateTime.jd(Rational(39014323, 16), 0)
ArgumentError: invalid fraction
jd' from (irb):2 from /home/psr/ruby/build/bin/irb:12:in'
Calling DateTime.jd without the second parameter (and relying on the default value) works as expected:
=> #<DateTime: 1963-12-31T04:30:00+00:00 ((2438395j,16200s,0n),+0s,2299161j)>
I think the problem may be the 'argc > n' tests in the num2num_with_frac and num2int_with_frac #defines in ext/date/date_core.c. The attached patch changes the tests to 'argc < n'. This makes jd function properly again with more than one argument.
Updated by philr (Phil ) over 12 years ago
The second example has gone partially missing above (because RedMine doesn't appear to be escaping the < and >). It should have read:
#<DateTime: 1963-12-31T04:30:00+00:00 ((2438395j,16200s,0n),+0s,2299161j)>
Updated by tadf (tadayoshi funaba) over 12 years ago
- Status changed from Open to Rejected
- Assignee set to tadf (tadayoshi funaba)
i've never seen such a nonsense patch.
this is not a bug.
you cannot specify both fraction and hour.
DateTime.new(2001,2,28.5,12) should mean 2001-03-31??
we have to be cautious about such a abuse.