Skip to content

Commit

Permalink
Merge pull request #10321 from q-nathangrand/fix-timestamp-fromDate-w…
Browse files Browse the repository at this point in the history
…holeSeconds

Fix Timestamps fromDate for negative 'exact second' java.sql.Timestamps
  • Loading branch information
deannagarcia authored Aug 8, 2022
2 parents e9e9421 + 5999a02 commit 076f421
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ public static Timestamp fromDate(Date date) {
if (date instanceof java.sql.Timestamp) {
java.sql.Timestamp sqlTimestamp = (java.sql.Timestamp) date;
long time = sqlTimestamp.getTime();
long integralSeconds = (time < 0) ? time / 1000L - 1 : time / 1000L ; // truncate the fractional seconds
long integralSeconds = (time < 0 && time % 1000 != 0) ? time / 1000L - 1 : time / 1000L ; // truncate the fractional seconds
return Timestamp.newBuilder()
.setSeconds(integralSeconds)
.setNanos(sqlTimestamp.getNanos())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -483,6 +483,13 @@ public void testFromSqlTimestamp_beforeEpoch() {
assertThat(Timestamps.toString(timestamp)).isEqualTo("1969-12-31T23:59:58.889Z");
}

@Test
public void testFromSqlTimestamp_beforeEpochWholeSecond() {
Date date = new java.sql.Timestamp(-2000);
Timestamp timestamp = Timestamps.fromDate(date);
assertThat(Timestamps.toString(timestamp)).isEqualTo("1969-12-31T23:59:58Z");
}

@Test
public void testTimeOperations() throws Exception {
Timestamp start = Timestamps.parse("0001-01-01T00:00:00Z");
Expand Down

0 comments on commit 076f421

Please sign in to comment.