/** * Get the ISO 8601 formatted representation of the given {@link ZonedDateTime}. * * @param timestamp the timestamp value * @param adjuster the optional component that adjusts the local date value before obtaining the epoch day; may be null if no * adjustment is necessary * @return the ISO 8601 formatted string */ public static String toIsoString(ZonedDateTime timestamp, TemporalAdjuster adjuster) { if (adjuster != null) { timestamp = timestamp.with(adjuster); } return timestamp.format(FORMATTER); }
/** * Get current (or as configured) time. * * @return a date time with a time-zone information as configured for this instance */ public ZonedDateTime get() { ZonedDateTime zdt = ZonedDateTime.now(); zdt = zdt.withZoneSameInstant(timeZone); zdt = zdt.plus(shiftSeconds, ChronoUnit.SECONDS); for (ChronoValues chronoValues : this.chronoValues) { zdt = zdt.with(chronoValues.field, chronoValues.value); } return zdt; }
private ZonedDateTime adjustToStartDate(ZonedDateTime zonedStartAt, ZonedDateTime zonedNow, ZoneId zoneId) { if (durationType == ReportDurationType.CUSTOM) { ZonedDateTime zonedStartDate = getZonedFromTs(startTs, zoneId).with(LocalTime.MIN); if (zonedStartDate.isAfter(zonedNow)) { zonedStartAt = zonedStartAt .withDayOfMonth(zonedStartDate.getDayOfMonth()) .withMonth(zonedStartDate.getMonthValue()) .withYear(zonedStartDate.getYear()); } } return zonedStartAt; }
case 'y': if (round) { dateTime = dateTime.withDayOfYear(1).with(LocalTime.MIN); } else { dateTime = dateTime.plusYears(sign * num); case 'M': if (round) { dateTime = dateTime.withDayOfMonth(1).with(LocalTime.MIN); } else { dateTime = dateTime.plusMonths(sign * num); case 'w': if (round) { dateTime = dateTime.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)).with(LocalTime.MIN); } else { dateTime = dateTime.plusWeeks(sign * num); case 'd': if (round) { dateTime = dateTime.with(LocalTime.MIN); } else { dateTime = dateTime.plusDays(sign * num);
case WEEK: zonedDateTime = zonedDateTime.truncatedTo(ChronoUnit.DAYS) .with(TemporalAdjusters.next(WeekFields.of(Locale.getDefault()).getFirstDayOfWeek())); break; case DAY:
result = result.with(ChronoField.INSTANT_SECONDS, accessor.getLong(ChronoField.INSTANT_SECONDS)); if (accessor.isSupported(ChronoField.NANO_OF_SECOND)) { result = result.with(ChronoField.NANO_OF_SECOND, accessor.getLong(ChronoField.NANO_OF_SECOND)); result = result.with(ChronoField.YEAR, accessor.getLong(ChronoField.YEAR)); } else if (accessor.isSupported(ChronoField.YEAR_OF_ERA)) { result = result.with(ChronoField.YEAR_OF_ERA, accessor.getLong(ChronoField.YEAR_OF_ERA)); } else if (accessor.isSupported(WeekFields.ISO.weekBasedYear())) { if (accessor.isSupported(WeekFields.ISO.weekOfWeekBasedYear())) { result = result.with(IsoFields.WEEK_BASED_YEAR, accessor.getLong(IsoFields.WEEK_BASED_YEAR)); if (accessor.isSupported(IsoFields.WEEK_OF_WEEK_BASED_YEAR)) { result = result.with(IsoFields.WEEK_OF_WEEK_BASED_YEAR, accessor.getLong(IsoFields.WEEK_OF_WEEK_BASED_YEAR)); result = result.with(ChronoField.MONTH_OF_YEAR, accessor.getLong(ChronoField.MONTH_OF_YEAR)); result = result.with(ChronoField.DAY_OF_MONTH, accessor.getLong(ChronoField.DAY_OF_MONTH)); result = result.with(ChronoField.HOUR_OF_DAY, accessor.getLong(ChronoField.HOUR_OF_DAY)); result = result.with(ChronoField.MINUTE_OF_HOUR, accessor.getLong(ChronoField.MINUTE_OF_HOUR)); result = result.with(ChronoField.SECOND_OF_MINUTE, accessor.getLong(ChronoField.SECOND_OF_MINUTE)); result = result.with(ChronoField.MILLI_OF_SECOND, accessor.getLong(ChronoField.MILLI_OF_SECOND)); result = result.with(ChronoField.NANO_OF_SECOND, accessor.getLong(ChronoField.NANO_OF_SECOND));
private ExecutionTimeResult getNextPotentialDayOfMonth(final ZonedDateTime date, final int lowestHour, final int lowestMinute, final int lowestSecond, final TimeNode node) { final NearestValue nearestValue = node.getNextValue(date.getDayOfMonth(), 0); if (nearestValue.getShifts() > 0) { return new ExecutionTimeResult(date.truncatedTo(DAYS).withDayOfMonth(1).plusMonths(nearestValue.getShifts()), false); } return new ExecutionTimeResult(date.truncatedTo(SECONDS).withDayOfMonth(nearestValue.getValue()) .with(LocalTime.of(lowestHour, lowestMinute, lowestSecond)), false); }
/** * Get the ISO 8601 formatted representation of the given {@link java.sql.Timestamp}, which contains a date and time but * has no timezone information. * * @param timestamp the JDBC timestamp value; may not be null * @param zoneId the timezone identifier or offset where the timestamp is defined * @param adjuster the optional component that adjusts the local date value before obtaining the epoch day; may be null if no * adjustment is necessary * @return the ISO 8601 formatted string */ public static String toIsoString(java.sql.Timestamp timestamp, ZoneId zoneId, TemporalAdjuster adjuster) { ZonedDateTime zdt = timestamp.toInstant().atZone(zoneId); if (adjuster != null) { zdt = zdt.with(adjuster); } return zdt.format(FORMATTER); }
public boolean isExpired(ZonedDateTime zonedNow, ZoneId zoneId) { if (durationType == ReportDurationType.CUSTOM) { ZonedDateTime zonedEndDate = getZonedFromTs(endTs, zoneId).with(LocalTime.MAX); return zonedEndDate.isBefore(zonedNow); } return false; }
@Override public ZonedDateTime getNextTriggerTime(ZonedDateTime zonedNow, ZoneId zoneId) { ZonedDateTime zonedStartAt = buildZonedStartAt(zonedNow, zoneId); DayOfWeek dayOfWeek = DayOfWeek.of(dayOfTheWeek); zonedStartAt = zonedStartAt.with(TemporalAdjusters.nextOrSame(dayOfWeek)); return zonedStartAt.isAfter(zonedNow) ? zonedStartAt : zonedStartAt.with(TemporalAdjusters.next(dayOfWeek)); } }
@Override public ZonedDateTime getNextTriggerTime(ZonedDateTime zonedNow, ZoneId zoneId) { ZonedDateTime zonedStartAt = buildZonedStartAt(zonedNow, zoneId); switch (dayOfMonth) { case LAST: zonedStartAt = zonedStartAt.with(TemporalAdjusters.lastDayOfMonth()); return zonedStartAt.isAfter(zonedNow) ? zonedStartAt : zonedStartAt.plusDays(1).with(TemporalAdjusters.lastDayOfMonth()); case FIRST: default: zonedStartAt = zonedStartAt.with(TemporalAdjusters.firstDayOfMonth()); return zonedStartAt.isAfter(zonedNow) ? zonedStartAt : zonedStartAt.with(TemporalAdjusters.firstDayOfNextMonth()); } } }
public ZonedDateTime with(TemporalAdjuster adjuster) { return dt.with(adjuster); }
public ZonedDateTime with(TemporalField field, long newValue) { return dt.with(field, newValue); }
private <T> void schedule(ScheduledCompletableFutureRecurring<T> schedule, SchedulerRunnable runnable, SchedulerTemporalAdjuster temporalAdjuster) { final Temporal newTime = ZonedDateTime.now(clock).with(temporalAdjuster); final ScheduledCompletableFutureOnce<T> deferred = new ScheduledCompletableFutureOnce<>(); deferred.thenAccept(v -> { if (temporalAdjuster.isDone(newTime)) { schedule.complete(v); } else { schedule(schedule, runnable, temporalAdjuster); } }); schedule.setScheduledPromise(deferred); atInternal(deferred, () -> { runnable.run(); return null; }, Instant.from(newTime)); }
@Override long next() { ZonedDateTime now = ZonedDateTime.now(clock); ZonedDateTime next = now.with(cron); return next.toInstant().toEpochMilli(); }
Instant instant = Instant.parse("2016-03-23T17:14:00.092812Z"); LocalTime newTime = LocalTime.parse("12:34:45.567891"); ZonedDateTime dt = instant.atZone(ZoneOffset.UTC); dt = dt.with(newTime); instant = dt.toInstant(); System.out.println("instant = " + instant); // prints 2016-03-23T12:34:45.567891Z
public ZonedDateTime evaluate(ZonedDateTime zdt, EventBean[] eventsPerStream, boolean isNewData, ExprEvaluatorContext context) { Integer value = CalendarOpUtil.getInt(valueExpr, eventsPerStream, isNewData, context); if (value == null) { return zdt; } return zdt.with(fieldName.getChronoField(), value); }
private ZonedDateTime toEndOfPreviousMonth(final ZonedDateTime datetime) { final ZonedDateTime previousMonth = datetime.minusMonths(1).with(lastDayOfMonth()); final int highestHour = hours.getValues().get(hours.getValues().size() - 1); final int highestMinute = minutes.getValues().get(minutes.getValues().size() - 1); final int highestSecond = seconds.getValues().get(seconds.getValues().size() - 1); return ZonedDateTime .of(previousMonth.getYear(), previousMonth.getMonth().getValue(), previousMonth.getDayOfMonth(), highestHour, highestMinute, highestSecond, 0, previousMonth.getZone()); }
@Override public Completable call(JobDetails jobDetails) { Trigger trigger = jobDetails.getTrigger(); ZonedDateTime currentBlock = ZonedDateTime.ofInstant(Instant.ofEpochMilli(trigger.getTriggerTime()), UTC) .with(DateTimeService.startOfPreviousEvenHour()); ZonedDateTime lastMaintainedBlock = currentBlock.plus(forwardTime); return service.verifyAndCreateTempTables(currentBlock, lastMaintainedBlock) .doOnCompleted(() -> logger.debugf("Temporary tables are valid until %s", lastMaintainedBlock.toString())); } }