private static OffsetDateTime fromMillis(long epochMillis) { return OffsetDateTime.ofInstant(Instant.ofEpochMilli(epochMillis), ZoneId.systemDefault()); } }
@Nullable private OffsetDateTime convertToOffsetDateTime(Timestamp timestamp) { if (timestamp == null) { return null; } final Optional<ZoneId> zoneId = calendar.flatMap(c -> Optional.of(c.getTimeZone().toZoneId())); return OffsetDateTime.ofInstant( Instant.ofEpochSecond(timestamp.getTime() / 1000, timestamp.getNanos()), zoneId.orElse(ZoneId.systemDefault())); } }
/** * Warning: relies on default timezone! */ public static String formatDateTime(long ms) { return formatDateTime(OffsetDateTime.ofInstant(Instant.ofEpochMilli(ms), ZoneId.systemDefault())); }
/** * Warning: relies on default timezone! */ public static String formatDateTime(Date d) { return formatDateTime(OffsetDateTime.ofInstant(d.toInstant(), ZoneId.systemDefault())); }
private OffsetDateTime convertToOffsetDateTime(Object srcObject) { Class<?> srcObjectClass = srcObject.getClass(); if (Date.class.isAssignableFrom(srcObjectClass)) { Instant instant = ((Date)srcObject).toInstant(); return OffsetDateTime.ofInstant(instant, ZoneId.systemDefault()); } else if (Instant.class.isAssignableFrom(srcObjectClass)) { return OffsetDateTime.ofInstant((Instant)srcObject, ZoneId.systemDefault()); } else if (Long.class.isAssignableFrom(srcObjectClass)) { Instant instant = Instant.ofEpochMilli((Long)srcObject); return OffsetDateTime.ofInstant(instant, ZoneId.systemDefault()); } else { return null; } } }
@Override public String toString(final Object obj) { final Calendar calendar = (Calendar)obj; final Instant instant = Instant.ofEpochMilli(calendar.getTimeInMillis()); final int offsetInMillis = calendar.getTimeZone().getOffset(calendar.getTimeInMillis()); final OffsetDateTime offsetDateTime = OffsetDateTime.ofInstant(instant, ZoneOffset.ofTotalSeconds(offsetInMillis / 1000)); return STD_DATE_TIME.format(offsetDateTime); } }
@Override public String format(final Timestamp value) { return this.formatter.format(OffsetDateTime.ofInstant(value.getInstant(), this.zoneOffset)); }
private static OffsetDateTime getOffsetDateTime(ResultSet r, int i) throws SQLException { Timestamp ts = r.getTimestamp(i); return ts == null ? null : OffsetDateTime.ofInstant(ts.toInstant(), ZoneId.systemDefault()); }
return OffsetDateTime.ofInstant( ts.toInstant(), ZoneId.systemDefault() ); return OffsetDateTime.ofInstant( date.toInstant(), ZoneId.systemDefault() ); return OffsetDateTime.ofInstant( Instant.ofEpochMilli( (Long) value ), ZoneId.systemDefault() ); return OffsetDateTime.ofInstant( calendar.toInstant(), calendar.getTimeZone().toZoneId() );
@Override public OffsetDateTime convertToMapped(Class<? extends OffsetDateTime> type, Timestamp value) { if (value == null) { return null; } return OffsetDateTime.ofInstant(value.toInstant(), ZoneOffset.systemDefault()); } }
@Override protected Object convertTimestampWithZone(Column column, Field fieldDefn, Object data) { if (data instanceof Long) { LocalDateTime localDateTime = nanosToLocalDateTimeUTC((Long) data); data = OffsetDateTime.of(localDateTime, ZoneOffset.UTC); } else if (data instanceof java.util.Date) { // any Date like subclasses will be given to us by the JDBC driver, which uses the local VM TZ, so we need to go // back to GMT data = OffsetDateTime.ofInstant(Instant.ofEpochMilli(((Date) data).getTime()), ZoneOffset.UTC); } return super.convertTimestampWithZone(column, fieldDefn, data); }
@Override public OffsetDateTime getJoinDate() { return OffsetDateTime.ofInstant(Instant.ofEpochMilli(joinDate), OFFSET); }
OffsetDateTime offsetDateTime = OffsetDateTime.ofInstant(timestampValue.toInstant(), ZoneOffset.UTC); return type.cast(offsetDateTime); } else {
/** * Return the system millis time as a OffsetDateTime. */ public static Object toOffsetDateTime(long systemMillis) { return OffsetDateTime.ofInstant(Instant.ofEpochMilli(systemMillis), ZoneId.systemDefault()); }
@Override public OffsetDateTime convertFromTimestamp(Timestamp ts) { return OffsetDateTime.ofInstant(ts.toInstant(), ZoneId.systemDefault()); }
@Test public void zonedTimeFormatIsoOffsetDateTimeMs() throws ParseException { Instant moment = Instant.now(); Date time = Date.from(moment); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSX"); String str = OffsetDateTime.ofInstant(moment, ZoneId.systemDefault()).format(formatter); Date dtParsed = DateUtil.parseTZDateString(str); assertEquals(str, time.toString(), dtParsed.toString()); }
@Test public void zonedTimeFormatIsoNoColonZMs() throws ParseException { Instant moment = Instant.now(); Date time = Date.from(moment); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ"); String str = OffsetDateTime.ofInstant(moment, ZoneId.systemDefault()).format(formatter); Date dtParsed = DateUtil.parseTZDateString(str); assertEquals(str, time.toString(), dtParsed.toString()); } }
@Test public void zonedTimeFormatIsoInstantMs() throws ParseException { Instant moment = Instant.now(); Date time = Date.from(moment); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'"); String str = OffsetDateTime.ofInstant(moment, ZoneId.of("UTC")).format(formatter); Date dtParsed = DateUtil.parseTZDateString(str); assertEquals(str, time.toString(), dtParsed.toString()); }
@Test public void zonedTimeFormatIsoInstant() throws ParseException { Instant moment = Instant.now(); Date time = Date.from(moment); String str = OffsetDateTime.ofInstant(moment, ZoneId.systemDefault()).format(DateTimeFormatter.ISO_INSTANT); Date dtParsed = DateUtil.parseTZDateString(str); assertEquals(str, time.toString(), dtParsed.toString()); }
@Test public void zonedTimeFormatIsoOffsetDateTime() throws ParseException { Instant moment = Instant.now(); Date time = Date.from(moment); String str = OffsetDateTime.ofInstant(moment, ZoneId.systemDefault()).format(DateTimeFormatter.ISO_OFFSET_DATE_TIME); Date dtParsed = DateUtil.parseTZDateString(str); assertEquals(str, time.toString(), dtParsed.toString()); }