public static void main(String[] args) throws ParseException { OffsetDateTime start = OffsetDateTime.parse("2014-06-10T10:45:00+03:00"); // Takes the time stamp and converts to an OffsetDateTime object OffsetDateTime end = OffsetDateTime.parse("2015-06-10T10:50:00+03:00"); Instant startInst = start.toInstant(); // converts it to an Instant Class object Instant endInst = end.toInstant(); Duration dur = Duration.between(startInst, endInst); // calculates the duration between the two instances System.out.println("The Period between the two instants is:\n"); System.out.println(dur.toMillis() + " Millisecs"); // prints the milliseconds }
@Override protected void writeDateTime(BsonWriter writer, String name, Object value, EncoderContext ctx) { writer.writeDateTime( OffsetDateTime.parse(((JsonObject) value).getString(DATE_FIELD)) .toInstant() .toEpochMilli()); }
// TODO clean up @Override public void testGoogleFitMeasureFromDataPoint( BodyHeight testMeasure, Map<String, Object> properties) { BodyHeight.Builder bodyHeightBuilder = new BodyHeight.Builder(new LengthUnitValue(METER, (double) properties.get("fpValue"))); if (properties.containsKey("endDateTimeString")) { bodyHeightBuilder.setEffectiveTimeFrame( TimeInterval.ofStartDateTimeAndEndDateTime( OffsetDateTime.parse((String) properties.get("startDateTimeString")), OffsetDateTime.parse((String) properties.get("endDateTimeString")))); } else { bodyHeightBuilder.setEffectiveTimeFrame( OffsetDateTime.parse((String) properties.get("startDateTimeString"))); } BodyHeight expectedBodyHeight = bodyHeightBuilder.build(); assertThat(testMeasure, equalTo(expectedBodyHeight)); }
private static Instant getInstant(String str) { try { Instant i = OffsetDateTime.parse(str).toInstant(); LOG.debug(str + " resolved to Instant"); return i; } catch (DateTimeException e) { LOG.debug(str + " does not match to OffsetDateTime pattern"); } return null; }
@Override public Optional<String> validate(final String dateTime) { try { OffsetDateTime.parse(dateTime, ISO_OFFSET_DATE_TIME); // Unfortunately, ISO_OFFSET_DATE_TIME accepts offsets with seconds, which is not RFC3339 // compliant. So // we need to do some further checks using a regex in order to be sure that it adhere to the // given format. final Matcher matcher = pattern.matcher(dateTime); if (matcher.matches()) { return Optional.empty(); } else { return error; } } catch (final DateTimeParseException e) { return error; } }
@Override public TemporalAccessor parse(String text, Locale locale) throws ParseException { DateTimeFormatter formatterToUse = DateTimeContextHolder.getFormatter(this.formatter, locale); if (LocalDate.class.equals(this.temporalAccessorType)) { return LocalDate.parse(text, formatterToUse); } else if (LocalTime.class.equals(this.temporalAccessorType)) { return LocalTime.parse(text, formatterToUse); } else if (LocalDateTime.class.equals(this.temporalAccessorType)) { return LocalDateTime.parse(text, formatterToUse); } else if (ZonedDateTime.class.equals(this.temporalAccessorType)) { return ZonedDateTime.parse(text, formatterToUse); } else if (OffsetDateTime.class.equals(this.temporalAccessorType)) { return OffsetDateTime.parse(text, formatterToUse); } else if (OffsetTime.class.equals(this.temporalAccessorType)) { return OffsetTime.parse(text, formatterToUse); } else { throw new IllegalStateException( "Unsupported TemporalAccessor type: " + this.temporalAccessorType); } }
public static void main(String... args) { F<String, F<String, Date>> simpleDate = df -> s -> { try { return new SimpleDateFormat(df).parse(s); } catch (Exception e) { throw new RuntimeException(e); } }; Either<String, Date> res = parseDate( Either.left(args[0]), s -> Date.from(LocalDateTime.parse(s).toInstant(ZoneOffset.UTC)), s -> Date.from(OffsetDateTime.parse(s).toInstant()), s -> Date.from(ZonedDateTime.parse(s).toInstant()), simpleDate.f("yyyy-MM-dd HH:mm:ss"), s -> "now".equals(s) ? new Date() : null); System.out.println("------"); System.out.println(res); }
@Test(dataProvider = "parseWithOffsetWithoutZone") public void testWithOffsetWithoutZone(String odtString, OffsetDateTime expectedOTD) { dtFormatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME; odt1 = OffsetDateTime.parse(odtString, dtFormatter); assertEquals(expectedOTD, odt1); }