@Override @SuppressWarnings("unchecked") public <X> X unwrap(Instant instant, Class<X> type, WrapperOptions options) { if ( instant == null ) { return null; } if ( Instant.class.isAssignableFrom( type ) ) { return (X) instant; } if ( Calendar.class.isAssignableFrom( type ) ) { final ZoneId zoneId = ZoneId.ofOffset( "UTC", ZoneOffset.UTC ); return (X) GregorianCalendar.from( instant.atZone( zoneId ) ); } if ( java.sql.Timestamp.class.isAssignableFrom( type ) ) { return (X) Timestamp.from( instant ); } if ( java.sql.Date.class.isAssignableFrom( type ) ) { return (X) java.sql.Date.from( instant ); } if ( java.sql.Time.class.isAssignableFrom( type ) ) { return (X) java.sql.Time.from( instant ); } if ( java.util.Date.class.isAssignableFrom( type ) ) { return (X) Date.from( instant ); } if ( Long.class.isAssignableFrom( type ) ) { return (X) Long.valueOf( instant.toEpochMilli() ); } throw unknownUnwrap( type ); }
/** * Get the {@link ZonedDateTime} with timezone 'UTC' for the specified field. * The field must have {@link Schema.LogicalType#TIMESTAMP_MILLIS} or {@link Schema.LogicalType#TIMESTAMP_MICROS} * as its logical type. * * @param fieldName zoned date time field to get. * @return value of the field as a {@link ZonedDateTime} * @throws UnexpectedFormatException if the provided field is not of {@link LogicalType#TIMESTAMP_MILLIS} or * {@link LogicalType#TIMESTAMP_MICROS} type. */ @Nullable public ZonedDateTime getTimestamp(String fieldName) { return getTimestamp(fieldName, ZoneId.ofOffset("UTC", ZoneOffset.UTC)); }
/** * Get the {@link ZonedDateTime} with timezone 'UTC' for the specified field. * The field must have {@link Schema.LogicalType#TIMESTAMP_MILLIS} or {@link Schema.LogicalType#TIMESTAMP_MICROS} * as its logical type. * * @param fieldName zoned date time field to get. * @return value of the field as a {@link ZonedDateTime} * @throws UnexpectedFormatException if the provided field is not of {@link LogicalType#TIMESTAMP_MILLIS} or * {@link LogicalType#TIMESTAMP_MICROS} type. */ @Nullable public ZonedDateTime getTimestamp(String fieldName) { return getTimestamp(fieldName, ZoneId.ofOffset("UTC", ZoneOffset.UTC)); }
private static long getStartTimeOfAggregatesForYear(long currentTime, String timeZone) { ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.ofEpochMilli(currentTime), ZoneId.ofOffset("GMT", ZoneOffset.of(timeZone))); return ZonedDateTime .of(zonedDateTime.getYear(), 1, 1, 0, 0, 0, 0, ZoneId.ofOffset("GMT", ZoneOffset.of(timeZone))) .toEpochSecond() * 1000; }
private static long getStartTimeOfPreviousYear(long currentEmitTime, String timeZone) { ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.ofEpochMilli(currentEmitTime), ZoneId.ofOffset("GMT", ZoneOffset.of(timeZone))); int givenYear = zonedDateTime.getYear(); return ZonedDateTime.of(--givenYear, 1, 1, 0, 0, 0, 0, ZoneId.ofOffset("GMT", ZoneOffset.of(timeZone))) .toEpochSecond() * 1000; }
private static long getNextEmitTimeForYear(long currentTime, String timeZone) { ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.ofEpochMilli(currentTime), ZoneId.ofOffset("GMT", ZoneOffset.of(timeZone))); return ZonedDateTime .of(zonedDateTime.getYear() + 1, 1, 1, 0, 0, 0, 0, ZoneId.ofOffset("GMT", ZoneOffset.of(timeZone))) .toEpochSecond() * 1000; }
/** * Return number of dates between now and date days. * * @param date Now - this date. * @return Number of days. */ public static int DAYS_BETWEEN_NOW(ZonedDateTime date) { validate(date, "DAYS_BETWEEN_NOW"); ZonedDateTime now = ZonedDateTime.now(ZoneId.ofOffset("UTC", ZoneOffset.UTC)); // returns number of days between date and now, date being lower. return (int) DAYS.between(date, now); }
public static long getUnixTimeStamp(String stringTimeStamp) { stringTimeStamp = stringTimeStamp.trim(); // stringTimeStamp must be of format "2017-06-01 04:05:50 +05:00 (not GMT) or 2017-06-01 04:05:50 (if in GMT)" if (gmtRegexPattern.matcher(stringTimeStamp).matches()) { String[] dateTime = stringTimeStamp.split(" "); return Instant.parse(dateTime[0].concat("T").concat(dateTime[1]).concat("Z")).toEpochMilli(); } else if (nonGmtRegexPattern.matcher(stringTimeStamp).matches()) { String[] dateTimeZone = stringTimeStamp.split(" "); String[] splitDate = dateTimeZone[0].split("-"); String[] splitTime = dateTimeZone[1].split(":"); return ZonedDateTime .of(Integer.parseInt(splitDate[0]), Integer.parseInt(splitDate[1]), Integer.parseInt(splitDate[2]), Integer.parseInt(splitTime[0]), Integer.parseInt(splitTime[1]), Integer.parseInt(splitTime[2]), 0, ZoneId.ofOffset("GMT", ZoneOffset.of(dateTimeZone[2]))) .toEpochSecond() * 1000; } throw new SiddhiAppRuntimeException("Timestamp " + stringTimeStamp + "doesn't match " + "the supported formats <yyyy>-<MM>-<dd> <HH>:<mm>:<ss> (for GMT time zone) or " + "<yyyy>-<MM>-<dd> <HH>:<mm>:<ss> <Z> (for non GMT time zone). The ISO 8601 UTC offset must be " + "provided for <Z> (ex. +05:30, -11:00"); }
private static long getStartTimeOfAggregatesForMonth(long currentTime, String timeZone) { ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.ofEpochMilli(currentTime), ZoneId.ofOffset("GMT", ZoneOffset.of(timeZone))); return ZonedDateTime.of(zonedDateTime.getYear(), zonedDateTime.getMonthValue(), 1, 0, 0, 0, 0, ZoneId.ofOffset("GMT", ZoneOffset.of(timeZone))).toEpochSecond() * 1000; }
private static long getStartTimeOfPreviousMonth(long currentEmitTime, String timeZone) { ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.ofEpochMilli(currentEmitTime), ZoneId.ofOffset("GMT", ZoneOffset.of(timeZone))); int givenMonth = zonedDateTime.getMonthValue(); int givenYear = zonedDateTime.getYear(); if (givenMonth == 1) { return ZonedDateTime.of(--givenYear, 12, 1, 0, 0, 0, 0, ZoneId.ofOffset("GMT", ZoneOffset.of(timeZone))) .toEpochSecond() * 1000; } else { return ZonedDateTime .of(givenYear, --givenMonth, 1, 0, 0, 0, 0, ZoneId.ofOffset("GMT", ZoneOffset.of(timeZone))) .toEpochSecond() * 1000; } }
private int parsePrefixedOffset(DateTimeParseContext context, CharSequence text, int prefixPos, int position) { String prefix = text.subSequence(prefixPos, position).toString().toUpperCase(); DateTimeParseContext newContext = context.copy(); if (position < text.length() && context.charEquals(text.charAt(position), 'Z')) { context.setParsed(ZoneId.ofOffset(prefix, ZoneOffset.UTC)); return position; } int endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position); if (endPos < 0) { context.setParsed(ZoneId.ofOffset(prefix, ZoneOffset.UTC)); return position; } int offsetSecs = (int) newContext.getParsed(OFFSET_SECONDS).longValue(); ZoneOffset offset = ZoneOffset.ofTotalSeconds(offsetSecs); context.setParsed(ZoneId.ofOffset(prefix, offset)); return endPos; }
private static long getNextEmitTimeForMonth(long currentTime, String timeZone) { ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.ofEpochMilli(currentTime), ZoneId.ofOffset("GMT", ZoneOffset.of(timeZone))); if (zonedDateTime.getMonthValue() == 12) { // For a time in December, emit time should be beginning of January next year return ZonedDateTime .of(zonedDateTime.getYear() + 1, 1, 1, 0, 0, 0, 0, ZoneId.ofOffset("GMT", ZoneOffset.of(timeZone))) .toEpochSecond() * 1000; } else { // For any other month, the 1st day of next month must be considered return ZonedDateTime.of(zonedDateTime.getYear(), zonedDateTime.getMonthValue() + 1, 1, 0, 0, 0, 0, ZoneId.ofOffset("GMT", ZoneOffset.of(timeZone))).toEpochSecond() * 1000; } }
@Override public <T> T unwrap(Instant instant, Class<T> type, WrapperOptions options) { if (instant == null) { return null; } if (Instant.class.isAssignableFrom(type)) { return (T) instant; } if (Calendar.class.isAssignableFrom(type)) { final ZoneId zoneId = ZoneId.ofOffset("UTC", ZoneOffset.UTC); return (T) GregorianCalendar.from(instant.atZone(zoneId)); } if (java.sql.Timestamp.class.isAssignableFrom(type)) { return (T) Timestamp.from(instant); } if (java.sql.Date.class.isAssignableFrom(type)) { return (T) java.sql.Date.from(instant); } if (java.sql.Time.class.isAssignableFrom(type)) { return (T) java.sql.Time.from(instant); } if (java.util.Date.class.isAssignableFrom(type)) { return (T) Date.from(instant); } if (Long.class.isAssignableFrom(type)) { return (T) Long.valueOf(instant.toEpochMilli()); } throw unknownUnwrap(type); }
@Override public <T> T unwrap(Instant instant, Class<T> type, WrapperOptions options) { if (instant == null) { return null; } if (Instant.class.isAssignableFrom(type)) { return (T) instant; } if (Calendar.class.isAssignableFrom(type)) { final ZoneId zoneId = ZoneId.ofOffset("UTC", ZoneOffset.UTC); return (T) GregorianCalendar.from(instant.atZone(zoneId)); } if (java.sql.Timestamp.class.isAssignableFrom(type)) { return (T) Timestamp.from(instant); } if (java.sql.Date.class.isAssignableFrom(type)) { return (T) java.sql.Date.from(instant); } if (java.sql.Time.class.isAssignableFrom(type)) { return (T) java.sql.Time.from(instant); } if (java.util.Date.class.isAssignableFrom(type)) { return (T) Date.from(instant); } if (Long.class.isAssignableFrom(type)) { return (T) Long.valueOf(instant.toEpochMilli()); } throw unknownUnwrap(type); }
@Override @SuppressWarnings("unchecked") public <X> X unwrap(Instant instant, Class<X> type, SharedSessionContractImplementor session) { if ( instant == null ) { return null; } if ( Instant.class.isAssignableFrom( type ) ) { return (X) instant; } if ( Calendar.class.isAssignableFrom( type ) ) { final ZoneId zoneId = ZoneId.ofOffset( "UTC", ZoneOffset.UTC ); return (X) GregorianCalendar.from( instant.atZone( zoneId ) ); } if ( Timestamp.class.isAssignableFrom( type ) ) { return (X) Timestamp.from( instant ); } if ( java.sql.Date.class.isAssignableFrom( type ) ) { return (X) java.sql.Date.from( instant ); } if ( java.sql.Time.class.isAssignableFrom( type ) ) { return (X) java.sql.Time.from( instant ); } if ( Date.class.isAssignableFrom( type ) ) { return (X) Date.from( instant ); } if ( Long.class.isAssignableFrom( type ) ) { return (X) Long.valueOf( instant.toEpochMilli() ); } throw unknownUnwrap( type ); }
ZonedDateTime zonedDateTime; if (object instanceof LocalDate) { zonedDateTime = ((LocalDate) object).atStartOfDay(ZoneId.ofOffset("UTC", ZoneOffset.UTC)); } else if (object instanceof ZonedDateTime) { zonedDateTime = (ZonedDateTime) object;
.atZone(ZoneId.ofOffset("UTC", ZoneOffset.UTC))); row.setValue(idx, zonedDateTime); } catch (ParseException e) {
/** * Formats a date as it is shown in the UI to allow for matching searches on date fields. * Needs the requesting user's timezone offset to UTC for correct matches. * * @param date the date * @param timeZoneOffset the timezone offset to UTC * @return a timezone offset adjusted string of the UI pattern {@code MMM d, YYYY HH:mm:ss a}. */ /*test*/ static String formatDateTimeAsUI(OffsetDateTime date, String timeZoneOffset) { try { return date.format(DateTimeFormatter.ofPattern("MMM d, YYYY HH:mm:ss a") .withZone(ZoneId.ofOffset("UTC", ZoneOffset.of(timeZoneOffset)))); } catch (DateTimeException dateTimeException) { throw new PaginationException(ErrorCode.FILTER_KEY_UNPROCESSABLE, "Wrong format: Can not parse timezone '" + timeZoneOffset + "' or date " + date.toString() + " properly.", dateTimeException); } }
@Override public List<Row> execute(List<Row> rows, ExecutorContext context) throws DirectiveExecutionException, ErrorRowException { for (Row row : rows) { int idx = row.find(column); if (idx != -1) { Object object = row.getValue(idx); // If the data in the cell is null or is already of date format, then // continue to next row. if (object == null || object instanceof ZonedDateTime) { continue; } long longValue = getLongValue(object); ZonedDateTime zonedDateTime = getZonedDateTime(longValue, timeUnit, ZoneId.ofOffset("UTC", ZoneOffset.UTC)); row.setValue(idx, zonedDateTime); } } return rows; }
/** * Checks if scheduler's time data satisfies existing time parameters. * * @param dto scheduler job data. * @param dateTime existing time data. * @param desiredStatus target exploratory status which has influence for time/date checking ('running' status * requires for checking start time, 'stopped' - for end time, 'terminated' - for * 'terminatedDateTime'). * @return true/false. */ private boolean isSchedulerJobDtoSatisfyCondition(SchedulerJobDTO dto, OffsetDateTime dateTime, UserInstanceStatus desiredStatus) { ZoneOffset zOffset = dto.getTimeZoneOffset(); OffsetDateTime roundedDateTime = OffsetDateTime.of( dateTime.toLocalDate(), LocalTime.of(dateTime.toLocalTime().getHour(), dateTime.toLocalTime().getMinute()), dateTime.getOffset()); LocalDateTime convertedDateTime = ZonedDateTime.ofInstant(roundedDateTime.toInstant(), ZoneId.ofOffset(TIMEZONE_PREFIX, zOffset)).toLocalDateTime(); return desiredStatus == TERMINATED ? Objects.nonNull(dto.getTerminateDateTime()) && convertedDateTime.toLocalDate().equals(dto.getTerminateDateTime().toLocalDate()) && convertedDateTime.toLocalTime().equals(getDesiredTime(dto, desiredStatus)) : !convertedDateTime.toLocalDate().isBefore(dto.getBeginDate()) && isFinishDateMatchesCondition(dto, convertedDateTime) && getDaysRepeat(dto, desiredStatus).contains(convertedDateTime.toLocalDate().getDayOfWeek()) && convertedDateTime.toLocalTime().equals(getDesiredTime(dto, desiredStatus)); }