/** Modulo, always returning a non-negative result. */ public static long floorMod(long x, long y) { return x - floorDiv(x, y) * y; }
public static int subtractMonths(long t0, long t1) { final long millis0 = DateTimeUtils.floorMod(t0, DateTimeUtils.MILLIS_PER_DAY); final int d0 = (int) DateTimeUtils.floorDiv(t0 - millis0, DateTimeUtils.MILLIS_PER_DAY); final long millis1 = DateTimeUtils.floorMod(t1, DateTimeUtils.MILLIS_PER_DAY); final int d1 = (int) DateTimeUtils.floorDiv(t1 - millis1, DateTimeUtils.MILLIS_PER_DAY); int x = subtractMonths(d0, d1); final long d2 = addMonths(d1, x); if (d2 == d0 && millis0 < millis1) { --x; } return x; }
/** Modulo, always returning a non-negative result. */ public static long floorMod(long x, long y) { return x - floorDiv(x, y) * y; }
/** Modulo, always returning a non-negative result. */ public static long floorMod(long x, long y) { return x - floorDiv(x, y) * y; }
/** Modulo, always returning a non-negative result. */ public static long floorMod(long x, long y) { return x - floorDiv(x, y) * y; }
/** Modulo, always returning a non-negative result. */ public static long floorMod(long x, long y) { return x - floorDiv(x, y) * y; }
/** Modulo, always returning a non-negative result. */ public static long floorMod(long x, long y) { return x - floorDiv(x, y) * y; }
public static int subtractMonths(long t0, long t1) { final long millis0 = DateTimeUtils.floorMod(t0, DateTimeUtils.MILLIS_PER_DAY); final int d0 = (int) DateTimeUtils.floorDiv(t0 - millis0, DateTimeUtils.MILLIS_PER_DAY); final long millis1 = DateTimeUtils.floorMod(t1, DateTimeUtils.MILLIS_PER_DAY); final int d1 = (int) DateTimeUtils.floorDiv(t1 - millis1, DateTimeUtils.MILLIS_PER_DAY); int x = subtractMonths(d0, d1); final long d2 = addMonths(d1, x); if (d2 == d0 && millis0 < millis1) { --x; } return x; }
public static int subtractMonths(long t0, long t1) { final long millis0 = DateTimeUtils.floorMod(t0, DateTimeUtils.MILLIS_PER_DAY); final int d0 = (int) DateTimeUtils.floorDiv(t0 - millis0, DateTimeUtils.MILLIS_PER_DAY); final long millis1 = DateTimeUtils.floorMod(t1, DateTimeUtils.MILLIS_PER_DAY); final int d1 = (int) DateTimeUtils.floorDiv(t1 - millis1, DateTimeUtils.MILLIS_PER_DAY); int x = subtractMonths(d0, d1); final long d2 = addMonths(d1, x); if (d2 == d0 && millis0 < millis1) { --x; } return x; }
public static int subtractMonths(long t0, long t1) { final long millis0 = DateTimeUtils.floorMod(t0, DateTimeUtils.MILLIS_PER_DAY); final int d0 = (int) DateTimeUtils.floorDiv(t0 - millis0, DateTimeUtils.MILLIS_PER_DAY); final long millis1 = DateTimeUtils.floorMod(t1, DateTimeUtils.MILLIS_PER_DAY); final int d1 = (int) DateTimeUtils.floorDiv(t1 - millis1, DateTimeUtils.MILLIS_PER_DAY); int x = subtractMonths(d0, d1); final long d2 = addMonths(d1, x); if (d2 == d0 && millis0 < millis1) { --x; } return x; }
public static int subtractMonths(long t0, long t1) { final long millis0 = DateTimeUtils.floorMod(t0, DateTimeUtils.MILLIS_PER_DAY); final int d0 = (int) DateTimeUtils.floorDiv(t0 - millis0, DateTimeUtils.MILLIS_PER_DAY); final long millis1 = DateTimeUtils.floorMod(t1, DateTimeUtils.MILLIS_PER_DAY); final int d1 = (int) DateTimeUtils.floorDiv(t1 - millis1, DateTimeUtils.MILLIS_PER_DAY); int x = subtractMonths(d0, d1); final long d2 = addMonths(d1, x); if (d2 == d0 && millis0 < millis1) { --x; } return x; }
public static int subtractMonths(long t0, long t1) { final long millis0 = DateTimeUtils.floorMod(t0, DateTimeUtils.MILLIS_PER_DAY); final int d0 = (int) DateTimeUtils.floorDiv(t0 - millis0, DateTimeUtils.MILLIS_PER_DAY); final long millis1 = DateTimeUtils.floorMod(t1, DateTimeUtils.MILLIS_PER_DAY); final int d1 = (int) DateTimeUtils.floorDiv(t1 - millis1, DateTimeUtils.MILLIS_PER_DAY); int x = subtractMonths(d0, d1); final long d2 = addMonths(d1, x); if (d2 == d0 && millis0 < millis1) { --x; } return x; }
public static int subtractMonths(long t0, long t1) { final long millis0 = DateTimeUtils.floorMod(t0, DateTimeUtils.MILLIS_PER_DAY); final int d0 = (int) DateTimeUtils.floorDiv(t0 - millis0, DateTimeUtils.MILLIS_PER_DAY); final long millis1 = DateTimeUtils.floorMod(t1, DateTimeUtils.MILLIS_PER_DAY); final int d1 = (int) DateTimeUtils.floorDiv(t1 - millis1, DateTimeUtils.MILLIS_PER_DAY); int x = subtractMonths(d0, d1); final long d2 = addMonths(d1, x); if (d2 == d0 && millis0 < millis1) { --x; } return x; }
public static int subtractMonths(long t0, long t1) { final long millis0 = DateTimeUtils.floorMod(t0, DateTimeUtils.MILLIS_PER_DAY); final int d0 = (int) DateTimeUtils.floorDiv(t0 - millis0, DateTimeUtils.MILLIS_PER_DAY); final long millis1 = DateTimeUtils.floorMod(t1, DateTimeUtils.MILLIS_PER_DAY); final int d1 = (int) DateTimeUtils.floorDiv(t1 - millis1, DateTimeUtils.MILLIS_PER_DAY); int x = subtractMonths(d0, d1); final long d2 = addMonths(d1, x); if (d2 == d0 && millis0 < millis1) { --x; } return x; }
@Test public void testFloorDiv() { assertThat(floorDiv(13, 3), equalTo(4L)); assertThat(floorDiv(12, 3), equalTo(4L)); assertThat(floorDiv(11, 3), equalTo(3L)); assertThat(floorDiv(-13, 3), equalTo(-5L)); assertThat(floorDiv(-12, 3), equalTo(-4L)); assertThat(floorDiv(-11, 3), equalTo(-4L)); assertThat(floorDiv(0, 3), equalTo(0L)); assertThat(floorDiv(1, 3), equalTo(0L)); assertThat(floorDiv(-1, 3), is(-1L)); }
/** Converts a value from JDBC format to a type that can be serialized as * JSON. */ private static Object jdbcToSerial(ColumnMetaData.Rep rep, Object value, Calendar calendar) { switch (rep) { case BYTE_STRING: return new ByteString((byte[]) value).toBase64String(); case JAVA_UTIL_DATE: case JAVA_SQL_TIMESTAMP: case JAVA_SQL_DATE: case JAVA_SQL_TIME: long t = ((Date) value).getTime(); if (calendar != null) { t += calendar.getTimeZone().getOffset(t); } switch (rep) { case JAVA_SQL_DATE: return (int) DateTimeUtils.floorDiv(t, DateTimeUtils.MILLIS_PER_DAY); case JAVA_SQL_TIME: return (int) DateTimeUtils.floorMod(t, DateTimeUtils.MILLIS_PER_DAY); default: return t; } default: return value; } }
@Test public void testFloorDiv() { assertThat(floorDiv(13, 3), equalTo(4L)); assertThat(floorDiv(12, 3), equalTo(4L)); assertThat(floorDiv(11, 3), equalTo(3L)); assertThat(floorDiv(-13, 3), equalTo(-5L)); assertThat(floorDiv(-12, 3), equalTo(-4L)); assertThat(floorDiv(-11, 3), equalTo(-4L)); assertThat(floorDiv(0, 3), equalTo(0L)); assertThat(floorDiv(1, 3), equalTo(0L)); assertThat(floorDiv(-1, 3), is(-1L)); }
return (int) DateTimeUtils.floorDiv(t, DateTimeUtils.MILLIS_PER_DAY); case JAVA_SQL_TIME: return (int) DateTimeUtils.floorMod(t, DateTimeUtils.MILLIS_PER_DAY);
return (int) DateTimeUtils.floorDiv(t, DateTimeUtils.MILLIS_PER_DAY); case JAVA_SQL_TIME: return (int) DateTimeUtils.floorMod(t, DateTimeUtils.MILLIS_PER_DAY);