Skip to content

Commit dbb21b7

Browse files
dr-itzkares
authored andcommitted
[core] fix nanoseconds handling for Timestamps (#1020)
Extracted from #1008, credit goes to @rdubya
1 parent 0a6f6d3 commit dbb21b7

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

src/java/arjdbc/util/DateTimeUtils.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -217,9 +217,11 @@ public static RubyTime newDummyTime(final ThreadContext context, final Timestamp
217217
final int hours = time.getHours();
218218
final int minutes = time.getMinutes();
219219
final int seconds = time.getSeconds();
220-
final int nanos = time.getNanos(); // max 999-999-999
220+
int nanos = time.getNanos(); // max 999-999-999
221+
final int millis = nanos / 1000000;
222+
nanos = nanos % 1000000;
221223

222-
DateTime dateTime = new DateTime(2000, 1, 1, hours, minutes, seconds, defaultZone);
224+
DateTime dateTime = new DateTime(2000, 1, 1, hours, minutes, seconds, millis, defaultZone);
223225
return RubyTime.newTime(context.runtime, dateTime, nanos);
224226
}
225227

@@ -232,9 +234,11 @@ public static RubyTime newTime(final ThreadContext context, final Timestamp time
232234
final int hours = timestamp.getHours();
233235
final int minutes = timestamp.getMinutes();
234236
final int seconds = timestamp.getSeconds();
235-
final int nanos = timestamp.getNanos(); // max 999-999-999
237+
int nanos = timestamp.getNanos(); // max 999-999-999
238+
final int millis = nanos / 1000000;
239+
nanos = nanos % 1000000;
236240

237-
DateTime dateTime = new DateTime(year, month, day, hours, minutes, seconds, 0, defaultZone);
241+
DateTime dateTime = new DateTime(year, month, day, hours, minutes, seconds, millis, defaultZone);
238242
return RubyTime.newTime(context.runtime, dateTime, nanos);
239243
}
240244

0 commit comments

Comments
 (0)