@Override public ConnectorPageSource createPageSource( ConnectorTransactionHandle transactionHandle, ConnectorSession session, ConnectorSplit split, List<ColumnHandle> columns) { AtopSplit atopSplit = (AtopSplit) split; ImmutableList.Builder<Type> types = ImmutableList.builder(); ImmutableList.Builder<AtopColumn> atopColumns = ImmutableList.builder(); for (ColumnHandle column : columns) { AtopColumnHandle atopColumnHandle = (AtopColumnHandle) column; AtopColumn atopColumn = atopSplit.getTable().getColumn(atopColumnHandle.getName()); atopColumns.add(atopColumn); types.add(typeManager.getType(atopColumn.getType())); } ZonedDateTime date = atopSplit.getDate(); checkArgument(date.equals(date.withHour(0).withMinute(0).withSecond(0).withNano(0)), "Expected date to be at beginning of day"); return new AtopPageSource(readerPermits, atopFactory, session, utf8Slice(atopSplit.getHost().getHostText()), atopSplit.getTable(), date, atopColumns.build(), types.build()); } }
@Override public ConnectorSplitSource getSplits(ConnectorTransactionHandle transactionHandle, ConnectorSession session, ConnectorTableLayoutHandle layoutHandle, SplitSchedulingStrategy splitSchedulingStrategy) { AtopTableLayoutHandle handle = (AtopTableLayoutHandle) layoutHandle; AtopTableHandle table = handle.getTableHandle(); List<ConnectorSplit> splits = new ArrayList<>(); ZonedDateTime end = ZonedDateTime.now(timeZone); for (Node node : nodeManager.getWorkerNodes()) { ZonedDateTime start = end.minusDays(maxHistoryDays - 1).withHour(0).withMinute(0).withSecond(0).withNano(0); while (start.isBefore(end)) { ZonedDateTime splitEnd = start.withHour(23).withMinute(59).withSecond(59).withNano(0); Domain splitDomain = Domain.create(ValueSet.ofRanges(Range.range(TIMESTAMP_WITH_TIME_ZONE, 1000 * start.toEpochSecond(), true, 1000 * splitEnd.toEpochSecond(), true)), false); if (handle.getStartTimeConstraint().overlaps(splitDomain) && handle.getEndTimeConstraint().overlaps(splitDomain)) { splits.add(new AtopSplit(table.getTable(), node.getHostAndPort(), start.toEpochSecond(), start.getZone())); } start = start.plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0); } } return new FixedSplitSource(splits); } }
public ZonedDateTime withNano(int value) { return dt.withNano(value); }
@Test public void testInsertReadDateTime() { Event event = new Event(); UUID id = UUID.randomUUID(); LocalDateTime localDateTimeNow = LocalDateTime.now().withNano(0); OffsetDateTime offsetDateTimeNow = OffsetDateTime.now(ZoneId.systemDefault()).withNano(0); ZonedDateTime zonedDateTimeNow = ZonedDateTime.now(ZoneId.systemDefault()).withNano(0); event.setId(id); event.setLocalDateTime(localDateTimeNow); event.setOffsetDateTime(offsetDateTimeNow); event.setZonedDateTime(zonedDateTimeNow); data.insert(event); event = data.findByKey(Event.class, id); Assert.assertEquals(localDateTimeNow, event.getLocalDateTime()); Assert.assertEquals(offsetDateTimeNow, event.getOffsetDateTime()); Assert.assertEquals(zonedDateTimeNow.toInstant(), event.getZonedDateTime().toInstant()); } }
case 'H': if (round) { dateTime = dateTime.withMinute(0).withSecond(0).withNano(0); } else { dateTime = dateTime.plusHours(sign * num); case 'm': if (round) { dateTime = dateTime.withSecond(0).withNano(0); } else { dateTime = dateTime.plusMinutes(sign * num); case 's': if (round) { dateTime = dateTime.withNano(0); } else { dateTime = dateTime.plusSeconds(sign * num);
public ZonedDateTime withNano(int value) { return dt.withNano(value); }
public ZonedDateTime withNano(int value) { return dt.withNano(value); }
public static ZonedDateTime toZeroMSN(ZonedDateTime dateTime) { return dateTime.withMinute(0).withSecond(0).withNano(0); }
public static ZonedDateTime roundDownMinutes(ZonedDateTime time, int step) { int mins = time.getMinute(); time = time.withSecond(0).withNano(0); if (mins % step == 0) return time; if (60 % step != 0) throw new IllegalArgumentException("Invalid step: " + step); return time.withMinute(mins - (mins % step)); }
/** * * @return a instance of java.time.ZonedDateTime with 00:00:00.000 for the time part * @since 2.1.0 */ public Temporal createTodayForTimeZone(final Object zoneId) { return ZonedDateTime.now(zoneId(zoneId)) .withHour(0).withMinute(0).withSecond(0).withNano(0); }
/** * * @return a instance of java.time.ZonedDateTime with 00:00:00.000 for the time part * @since 2.1.0 */ public Temporal createTodayForTimeZone(final Object zoneId) { return ZonedDateTime.now(zoneId(zoneId)) .withHour(0).withMinute(0).withSecond(0).withNano(0); }
public static ZonedDateTime toZeroHMSN(ZonedDateTime dateTime) { return dateTime.withHour(0).withMinute(0).withSecond(0).withNano(0); }
throw ROOT_LOGGER.unableToObtainCertificate(alias); ZonedDateTime current = ZonedDateTime.now().withZoneSameInstant(ZoneId.of("UTC")).withNano(0); ZonedDateTime notAfter = ZonedDateTime.ofInstant(certificate.getNotAfter().toInstant(), ZoneId.of("UTC")); long daysToExpiry = ChronoUnit.DAYS.between(current, notAfter);
@Override public final boolean isValid(final ZonedDateTime pvalue, final ConstraintValidatorContext pcontext) { if (pvalue == null) { return true; } final ZonedDateTime dateLimit = ZonedDateTime.now().minusYears(minYears).withHour(0) .withMinute(0).withSecond(0).withNano(0); return !dateLimit.isBefore(pvalue.withHour(0).withMinute(0).withSecond(0).withNano(0)); } }
public static ZonedDateTime roundUpMinutes(ZonedDateTime time, int step) { int mins = time.getMinute(); time = time.withSecond(0).withNano(0); if (mins % step == 0) return time; if (60 % step != 0) throw new IllegalArgumentException("Invalid step: " + step); mins = mins + step - (mins % step); return mins < 60 ? time.withMinute(mins) : time.plusHours(1).withMinute(mins - 60); }
@Parameters(name = "{0}") public static Collection<Object[]> generateData() { List<Object[]> params = new ArrayList<>(); ZonedDateTime dateTime = ZonedDateTime.of(2016, 3, 16, 16, 0, 0, 0, ZoneId.of("Europe/Paris")); for (int i = 0; i < 4; i++) { int nanos = 123 * (i == 0 ? 0 : 1) * (int) Math.pow(1000, i > 1 ? i - 1 : 0); params.add(new Object[]{ISO_INSTANT.format(dateTime.withNano(nanos)), java.sql.Timestamp.class}); } params.add(new Object[]{ISO_LOCAL_TIME.format(dateTime.withSecond(1)), java.sql.Time.class}); params.add(new Object[]{dateTime.toLocalDate().toString(), java.sql.Date.class}); params.add(new Object[]{"f47ac10b-58cc-4372-a567-0e02b2c3d479", UUID.class}); return params; }
@Override public ConnectorPageSource createPageSource( ConnectorTransactionHandle transactionHandle, ConnectorSession session, ConnectorSplit split, List<ColumnHandle> columns) { AtopSplit atopSplit = (AtopSplit) split; ImmutableList.Builder<Type> types = ImmutableList.builder(); ImmutableList.Builder<AtopColumn> atopColumns = ImmutableList.builder(); for (ColumnHandle column : columns) { AtopColumnHandle atopColumnHandle = (AtopColumnHandle) column; AtopColumn atopColumn = atopSplit.getTable().getColumn(atopColumnHandle.getName()); atopColumns.add(atopColumn); types.add(typeManager.getType(atopColumn.getType())); } ZonedDateTime date = atopSplit.getDate(); checkArgument(date.equals(date.withHour(0).withMinute(0).withSecond(0).withNano(0)), "Expected date to be at beginning of day"); return new AtopPageSource(readerPermits, atopFactory, session, utf8Slice(atopSplit.getHost().getHostText()), atopSplit.getTable(), date, atopColumns.build(), types.build()); } }
plusMonths( period.getMonths() ). plusDays( period.getDays() ). withNano( 0 );
@Override public ConnectorSplitSource getSplits(ConnectorTransactionHandle transactionHandle, ConnectorSession session, ConnectorTableLayoutHandle layoutHandle, SplitSchedulingStrategy splitSchedulingStrategy) { AtopTableLayoutHandle handle = (AtopTableLayoutHandle) layoutHandle; AtopTableHandle table = handle.getTableHandle(); List<ConnectorSplit> splits = new ArrayList<>(); ZonedDateTime end = ZonedDateTime.now(timeZone); for (Node node : nodeManager.getWorkerNodes()) { ZonedDateTime start = end.minusDays(maxHistoryDays - 1).withHour(0).withMinute(0).withSecond(0).withNano(0); while (start.isBefore(end)) { ZonedDateTime splitEnd = start.withHour(23).withMinute(59).withSecond(59).withNano(0); Domain splitDomain = Domain.create(ValueSet.ofRanges(Range.range(TIMESTAMP_WITH_TIME_ZONE, 1000 * start.toEpochSecond(), true, 1000 * splitEnd.toEpochSecond(), true)), false); if (handle.getStartTimeConstraint().overlaps(splitDomain) && handle.getEndTimeConstraint().overlaps(splitDomain)) { splits.add(new AtopSplit(table.getTable(), node.getHostAndPort(), start.toEpochSecond(), start.getZone())); } start = start.plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0); } } return new FixedSplitSource(splits); } }
/** * @param zdt * @return */ public Instant getInstant(ZonedDateTime zdt) { ZonedDateTime offset = zdt.withHour(hour).withMinute(minute).withSecond(second).withNano((int)(millisecond * 1000000l)); LocalDateTime ldt = zdt.toLocalDateTime(); ldt = ldt.withHour(hour).withMinute(minute).withSecond(second).withNano((int)(millisecond * 1000000l)); if(!zdt.getZone().getRules().isValidOffset(ldt, zdt.getOffset())) { //Within a gap of DST so OR after the transition ZoneOffsetTransition transition = zdt.getZone().getRules().nextTransition(zdt.toInstant()); if(!ldt.isAfter(transition.getDateTimeAfter())){ //In a gap so we shift our time forward to the end of the gap. offset = transition.getDateTimeAfter().atZone(zdt.getZone()); }else { //After a gap so ensure we use the next zone offset offset = ldt.atOffset(transition.getOffsetAfter()).atZoneSimilarLocal(transition.getOffsetAfter()); } } return offset.toInstant(); } }