@Override public void writeLocalTime( LocalTime localTime ) { buf.putLong( localTime.toNanoOfDay() ); }
/** * Any out of range value means a store corruption */ private static void checkValidNanoOfDay( long nanoOfDay ) { if ( nanoOfDay > LocalTime.MAX.toNanoOfDay() || nanoOfDay < LocalTime.MIN.toNanoOfDay() ) { throw new InvalidRecordException( "Nanosecond of day out of range:" + nanoOfDay ); } }
@Override public final void writeLocalTime( LocalTime localTime ) throws E { writeLocalTime( localTime.toNanoOfDay() ); }
@Override public void write( Object value, FlushableChannel into ) throws IOException { into.putLong( ((LocalTime) value).toNanoOfDay() ); } } );
private LocalTime nextLocalTimeRaw() { return ofNanoOfDay( longBetween( LocalTime.MIN.toNanoOfDay(), LocalTime.MAX.toNanoOfDay() ) ); }
private static long secondsBetween(LocalTime start, LocalTime end) { return NANOSECONDS.toSeconds(end.toNanoOfDay() - start.toNanoOfDay()); }
private static long millisBetween(LocalTime start, LocalTime end) { return NANOSECONDS.toMillis(end.toNanoOfDay() - start.toNanoOfDay()); }
private static long minutesBetween(LocalTime start, LocalTime end) { return NANOSECONDS.toMinutes(end.toNanoOfDay() - start.toNanoOfDay()); }
private static long hoursBetween(LocalTime start, LocalTime end) { return NANOSECONDS.toHours(end.toNanoOfDay() - start.toNanoOfDay()); }
/** * Constructs standard (non-legacy) TIMESTAMP value corresponding to argument */ public static SqlTimestamp sqlTimestampOf(LocalDateTime dateTime) { return new SqlTimestamp(DAYS.toMillis(dateTime.toLocalDate().toEpochDay()) + NANOSECONDS.toMillis(dateTime.toLocalTime().toNanoOfDay())); }
@Override public void writeLocalTime( LocalTime localTime ) throws IOException { long nanoOfDay = localTime.toNanoOfDay(); packStructHeader( LOCAL_TIME_SIZE, LOCAL_TIME ); pack( nanoOfDay ); }
public static byte[] encodeLocalTimeArray( LocalTime[] times ) { long[] data = new long[times.length]; for ( int i = 0; i < data.length; i++ ) { data[i] = times[i].toNanoOfDay(); } TemporalHeader header = new TemporalHeader( TemporalType.TEMPORAL_LOCAL_TIME.temporalType ); byte[] bytes = DynamicArrayStore.encodeFromNumbers( data, DynamicArrayStore.TEMPORAL_HEADER_SIZE ); header.writeArrayHeaderTo( bytes ); return bytes; }
/** * Get the number of nanoseconds past epoch of the given {@link LocalDateTime}. * * @param timestamp the Java timestamp value * @return the epoch nanoseconds */ static long toEpochNanos(LocalDateTime timestamp) { long nanoInDay = timestamp.toLocalTime().toNanoOfDay(); long nanosOfDay = toEpochNanos(timestamp.toLocalDate()); return nanosOfDay + nanoInDay; }
private long millisOnTravelDay(EdgeIteratorState edge, long instant) { final ZoneId zoneId = gtfsStorage.getTimeZones().get(flagEncoder.getValidityId(edge.getFlags())).zoneId; return Instant.ofEpochMilli(instant).atZone(zoneId).toLocalTime().toNanoOfDay() / 1000000L; }
public static SqlTime sqlTimeOf(LocalTime time, Session session) { if (session.toConnectorSession().isLegacyTimestamp()) { long millisUtc = LocalDate.ofEpochDay(0) .atTime(time) .atZone(UTC) .withZoneSameLocal(ZoneId.of(session.getTimeZoneKey().getId())) .toInstant() .toEpochMilli(); return new SqlTime(millisUtc, session.getTimeZoneKey()); } return new SqlTime(NANOSECONDS.toMillis(time.toNanoOfDay())); }
public static byte[] encodeTimeArray( OffsetTime[] times ) { // We could store this in dateTimes.length * 1.5 if we wanted long[] data = new long[(int) (Math.ceil( times.length * BLOCKS_TIME ))]; int i; for ( i = 0; i < times.length; i++ ) { data[i * BLOCKS_TIME] = times[i].toLocalTime().toNanoOfDay(); data[i * BLOCKS_TIME + 1] = times[i].getOffset().getTotalSeconds(); } TemporalHeader header = new TemporalHeader( TemporalType.TEMPORAL_TIME.temporalType ); byte[] bytes = DynamicArrayStore.encodeFromNumbers( data, DynamicArrayStore.TEMPORAL_HEADER_SIZE ); header.writeArrayHeaderTo( bytes ); return bytes; }
@Override public void writeTime( OffsetTime offsetTime ) throws IOException { long nanosOfDayLocal = offsetTime.toLocalTime().toNanoOfDay(); int offsetSeconds = offsetTime.getOffset().getTotalSeconds(); packStructHeader( TIME_SIZE, TIME ); pack( nanosOfDayLocal ); pack( offsetSeconds ); }
@Test public void shouldReturnLocalTimeInstanceWhenConvertingLongToLocalTime() { LocalTime now = LocalTime.now(); long nanoOfDay = now.toNanoOfDay(); assertThat(Conversions.toLocalTime(nanoOfDay)).isEqualTo(now); } }
@Test void shouldReportTooHighLocalTimeRecord() { // given PropertyRecord property = inUse( new PropertyRecord( 42 ) ); final int keyId = 6; add( inUse( new PropertyKeyTokenRecord( keyId ) ) ); final long[] longs = TemporalType.encodeLocalTime( keyId, LocalTime.MAX.toNanoOfDay() + 1 ); expectInvalidPropertyValue( property, longs ); }
@Test void shouldReportTooHighNanoTimeRecord() { // given PropertyRecord property = inUse( new PropertyRecord( 42 ) ); final int keyId = 6; add( inUse( new PropertyKeyTokenRecord( keyId ) ) ); final long[] longs = TemporalType.encodeTime( keyId, LocalTime.MAX.toNanoOfDay() + 1, 0 ); expectInvalidPropertyValue( property, longs ); }