public SqlIntervalDayTime(int day, int hour, int minute, int second, int millis) { milliSeconds = toMillis(day, hour, minute, second, millis); }
public static long parseMillis(String value) { if (value.equals(LONG_MIN_VALUE)) { return Long.MIN_VALUE; } long signum = 1; if (value.startsWith("-")) { signum = -1; value = value.substring(1); } Matcher matcher = FORMAT.matcher(value); if (!matcher.matches()) { throw new IllegalArgumentException("Invalid day-time interval: " + value); } long days = parseLong(matcher.group(1)); long hours = parseLong(matcher.group(2)); long minutes = parseLong(matcher.group(3)); long seconds = parseLong(matcher.group(4)); long millis = parseLong(matcher.group(5)); return toMillis(days, hours, minutes, seconds, millis) * signum; } }
@Test(expectedExceptions = IllegalArgumentException.class) public void testOverflow() { long days = (Long.MAX_VALUE / DAYS.toMillis(1)) + 1; toMillis(days, 0, 0, 0, 0); } }
@Test public void textMaxDays() { long days = Long.MAX_VALUE / DAYS.toMillis(1); assertEquals(toMillis(days, 0, 0, 0, 0), DAYS.toMillis(days)); }
public static long parsePeriodMillis(PeriodFormatter periodFormatter, String value, IntervalField startField, IntervalField endField) { try { Period period = parsePeriod(periodFormatter, value); return IntervalDayTime.toMillis( period.getValue(DAY_FIELD), period.getValue(HOUR_FIELD), period.getValue(MINUTE_FIELD), period.getValue(SECOND_FIELD), period.getValue(MILLIS_FIELD)); } catch (IllegalArgumentException e) { throw invalidInterval(e, value, startField, endField); } }
@Test public void testFormat() { assertMillis(0, "0 00:00:00.000"); assertMillis(1, "0 00:00:00.001"); assertMillis(-1, "-0 00:00:00.001"); assertMillis(toMillis(12, 13, 45, 56, 789), "12 13:45:56.789"); assertMillis(toMillis(-12, -13, -45, -56, -789), "-12 13:45:56.789"); assertMillis(Long.MAX_VALUE, "106751991167 07:12:55.807"); assertMillis(Long.MIN_VALUE + 1, "-106751991167 07:12:55.807"); assertMillis(Long.MIN_VALUE, "-106751991167 07:12:55.808"); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testOverflow() { long days = (Long.MAX_VALUE / DAYS.toMillis(1)) + 1; toMillis(days, 0, 0, 0, 0); } }
@Test public void textMaxDays() { long days = Long.MAX_VALUE / DAYS.toMillis(1); assertEquals(toMillis(days, 0, 0, 0, 0), DAYS.toMillis(days)); }
@Test public void testFormat() { assertMillis(0, "0 00:00:00.000"); assertMillis(1, "0 00:00:00.001"); assertMillis(-1, "-0 00:00:00.001"); assertMillis(toMillis(12, 13, 45, 56, 789), "12 13:45:56.789"); assertMillis(toMillis(-12, -13, -45, -56, -789), "-12 13:45:56.789"); assertMillis(Long.MAX_VALUE, "106751991167 07:12:55.807"); assertMillis(Long.MIN_VALUE + 1, "-106751991167 07:12:55.807"); assertMillis(Long.MIN_VALUE, "-106751991167 07:12:55.808"); }