Skip to content

Commit 69364e2

Browse files
committedMar 19, 2018
[fix] double calculating (fract. day) div rest hour on Date civil/jd
resolves GH-5092
1 parent 0279de8 commit 69364e2

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed
 

Diff for: ‎core/src/main/java/org/jruby/ext/date/RubyDate.java

+7-10
Original file line numberDiff line numberDiff line change
@@ -545,21 +545,18 @@ private static RubyDate jdImpl(ThreadContext context, IRubyObject self, IRubyObj
545545

546546
static DateTime adjustWithDayFraction(ThreadContext context, DateTime dt, final long[] rest) {
547547
final RubyFixnum zero = RubyFixnum.zero(context.runtime);
548-
int ival = getHour(context, zero, rest);
548+
int ival;
549+
550+
ival = getHour(context, zero, rest);
549551
dt = dt.plusHours(ival);
550552

551553
if (rest[0] != 0) {
552-
ival = getHour(context, zero, rest);
553-
dt = dt.plusHours(ival);
554+
ival = getMinute(context, zero, rest);
555+
dt = dt.plusMinutes(ival);
554556

555557
if (rest[0] != 0) {
556-
ival = getMinute(context, zero, rest);
557-
dt = dt.plusMinutes(ival);
558-
559-
if (rest[0] != 0) {
560-
ival = getSecond(context, zero, rest);
561-
dt = dt.plusSeconds(ival);
562-
}
558+
ival = getSecond(context, zero, rest);
559+
dt = dt.plusSeconds(ival);
563560
}
564561
}
565562
return dt;

Diff for: ‎test/jruby/test_date.rb

+8
Original file line numberDiff line numberDiff line change
@@ -744,4 +744,12 @@ def test_strftime__offset
744744
end
745745
end
746746

747+
def test_jd_day_fraction
748+
t = 86400 * DateTime.new(1970, 1, 1).jd + Time.utc(2018, 3, 18, 23).to_i
749+
dt = DateTime.jd((t + 0)/86400r)
750+
assert_equal '2018-03-18T23:00:00+00:00', dt.to_s
751+
dt = DateTime.jd((t + 1)/86400r)
752+
assert_equal '2018-03-18T23:00:01+00:00', dt.to_s
753+
end
754+
747755
end

0 commit comments

Comments
 (0)
Please sign in to comment.