@Override public Value negate() { return ValueTime.fromNanos(-nanos); }
/** * Get or create a time value for the given time. * * @param time the time * @return the value */ public static ValueTime get(Time time) { return fromNanos(DateTimeUtils.nanosFromDate(time.getTime())); }
/** * Calculate the time value from a given time in * milliseconds in UTC. * * @param ms the milliseconds * @return the value */ public static ValueTime fromMillis(long ms) { return fromNanos(DateTimeUtils.nanosFromDate(ms)); }
@Override public Value divide(Value v) { return ValueTime.fromNanos((long) (nanos / v.getDouble())); }
@Override public Value multiply(Value v) { return ValueTime.fromNanos((long) (nanos * v.getDouble())); }
/** * Parse a string to a ValueTime. * * @param s the string to parse * @return the time */ public static ValueTime parse(String s) { try { return fromNanos(DateTimeUtils.parseTimeNanos(s, 0, s.length(), false)); } catch (Exception e) { throw DbException.get(ErrorCode.INVALID_DATETIME_CONSTANT_2, e, "TIME", s); } }
/** * Convert the time using the specified calendar. * * @param x the time * @param calendar the calendar * @return the time */ public static ValueTime convertTime(Time x, Calendar calendar) { if (calendar == null) { throw DbException.getInvalidValueException("calendar", null); } Calendar cal = (Calendar) calendar.clone(); cal.setTimeInMillis(x.getTime()); long nanos = nanosFromCalendar(cal); return ValueTime.fromNanos(nanos); }
@Override public Value add(Value v) { ValueTime t = (ValueTime) v.convertTo(TIME); return ValueTime.fromNanos(nanos + t.getNanos()); }
@Override public Value subtract(Value v) { ValueTime t = (ValueTime) v.convertTo(TIME); return ValueTime.fromNanos(nanos - t.getNanos()); }