Java Code Examples for java.time.temporal.TemporalAccessor#isSupported()
The following examples show how to use
java.time.temporal.TemporalAccessor#isSupported() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: Parsed.java From jdk1.8-source-analysis with Apache License 2.0 | 6 votes |
private void crossCheck(TemporalAccessor target) { for (Iterator<Entry<TemporalField, Long>> it = fieldValues.entrySet().iterator(); it.hasNext(); ) { Entry<TemporalField, Long> entry = it.next(); TemporalField field = entry.getKey(); if (target.isSupported(field)) { long val1; try { val1 = target.getLong(field); } catch (RuntimeException ex) { continue; } long val2 = entry.getValue(); if (val1 != val2) { throw new DateTimeException("Conflict found: Field " + field + " " + val1 + " differs from " + field + " " + val2 + " derived from " + target); } it.remove(); } } }
Example 2
Source File: Parsed.java From dragonwell8_jdk with GNU General Public License v2.0 | 6 votes |
private void crossCheck(TemporalAccessor target) { for (Iterator<Entry<TemporalField, Long>> it = fieldValues.entrySet().iterator(); it.hasNext(); ) { Entry<TemporalField, Long> entry = it.next(); TemporalField field = entry.getKey(); if (target.isSupported(field)) { long val1; try { val1 = target.getLong(field); } catch (RuntimeException ex) { continue; } long val2 = entry.getValue(); if (val1 != val2) { throw new DateTimeException("Conflict found: Field " + field + " " + val1 + " differs from " + field + " " + val2 + " derived from " + target); } it.remove(); } } }
Example 3
Source File: Parsed.java From Bytecoder with Apache License 2.0 | 6 votes |
private void crossCheck(TemporalAccessor target) { for (Iterator<Entry<TemporalField, Long>> it = fieldValues.entrySet().iterator(); it.hasNext(); ) { Entry<TemporalField, Long> entry = it.next(); TemporalField field = entry.getKey(); if (target.isSupported(field)) { long val1; try { val1 = target.getLong(field); } catch (RuntimeException ex) { continue; } long val2 = entry.getValue(); if (val1 != val2) { throw new DateTimeException("Conflict found: Field " + field + " " + val1 + " differs from " + field + " " + val2 + " derived from " + target); } it.remove(); } } }
Example 4
Source File: Parsed.java From jdk8u60 with GNU General Public License v2.0 | 6 votes |
private void crossCheck(TemporalAccessor target) { for (Iterator<Entry<TemporalField, Long>> it = fieldValues.entrySet().iterator(); it.hasNext(); ) { Entry<TemporalField, Long> entry = it.next(); TemporalField field = entry.getKey(); if (target.isSupported(field)) { long val1; try { val1 = target.getLong(field); } catch (RuntimeException ex) { continue; } long val2 = entry.getValue(); if (val1 != val2) { throw new DateTimeException("Conflict found: Field " + field + " " + val1 + " differs from " + field + " " + val2 + " derived from " + target); } it.remove(); } } }
Example 5
Source File: Parsed.java From jdk8u-jdk with GNU General Public License v2.0 | 6 votes |
private void crossCheck(TemporalAccessor target) { for (Iterator<Entry<TemporalField, Long>> it = fieldValues.entrySet().iterator(); it.hasNext(); ) { Entry<TemporalField, Long> entry = it.next(); TemporalField field = entry.getKey(); if (target.isSupported(field)) { long val1; try { val1 = target.getLong(field); } catch (RuntimeException ex) { continue; } long val2 = entry.getValue(); if (val1 != val2) { throw new DateTimeException("Conflict found: Field " + field + " " + val1 + " differs from " + field + " " + val2 + " derived from " + target); } it.remove(); } } }
Example 6
Source File: Parsed.java From JDKSourceCode1.8 with MIT License | 6 votes |
private void crossCheck(TemporalAccessor target) { for (Iterator<Entry<TemporalField, Long>> it = fieldValues.entrySet().iterator(); it.hasNext(); ) { Entry<TemporalField, Long> entry = it.next(); TemporalField field = entry.getKey(); if (target.isSupported(field)) { long val1; try { val1 = target.getLong(field); } catch (RuntimeException ex) { continue; } long val2 = entry.getValue(); if (val1 != val2) { throw new DateTimeException("Conflict found: Field " + field + " " + val1 + " differs from " + field + " " + val2 + " derived from " + target); } it.remove(); } } }
Example 7
Source File: Parsed.java From openjdk-jdk8u with GNU General Public License v2.0 | 6 votes |
private void crossCheck(TemporalAccessor target) { for (Iterator<Entry<TemporalField, Long>> it = fieldValues.entrySet().iterator(); it.hasNext(); ) { Entry<TemporalField, Long> entry = it.next(); TemporalField field = entry.getKey(); if (target.isSupported(field)) { long val1; try { val1 = target.getLong(field); } catch (RuntimeException ex) { continue; } long val2 = entry.getValue(); if (val1 != val2) { throw new DateTimeException("Conflict found: Field " + field + " " + val1 + " differs from " + field + " " + val2 + " derived from " + target); } it.remove(); } } }
Example 8
Source File: DateUtility.java From Bats with Apache License 2.0 | 5 votes |
/** * Best effort parsing of the given value */ public static LocalDateTime parseBest(String value) { TemporalAccessor parsed = getDateTimeFormatter().parse(value); LocalDate datePart; LocalTime timePart; ZoneOffset zoneOffset; long epochDay = 0, nanoSeconds = 0; int offsetSeconds = 0; // get different parsed parts if (parsed.isSupported(ChronoField.EPOCH_DAY)) { epochDay = parsed.getLong(ChronoField.EPOCH_DAY); } if (parsed.isSupported(ChronoField.NANO_OF_DAY)) { nanoSeconds = parsed.getLong(ChronoField.NANO_OF_DAY); } if (parsed.isSupported(ChronoField.OFFSET_SECONDS)) { offsetSeconds = parsed.get(ChronoField.OFFSET_SECONDS); } zoneOffset = ZoneOffset.ofTotalSeconds(offsetSeconds); datePart = LocalDate.ofEpochDay(epochDay); timePart = LocalTime.ofNanoOfDay(nanoSeconds); return OffsetDateTime.of(datePart, timePart, zoneOffset).toLocalDateTime(); }
Example 9
Source File: AttributeValueConverter.java From qpid-broker-j with Apache License 2.0 | 5 votes |
private Date convertToDate(TemporalAccessor t) { if(!t.isSupported(ChronoField.INSTANT_SECONDS)) { t = LocalDateTime.of(LocalDate.from(t), LocalTime.MIN).atOffset(ZoneOffset.UTC); } return new Date((t.getLong(ChronoField.INSTANT_SECONDS) * 1000L) + t.getLong(ChronoField.MILLI_OF_SECOND)); }
Example 10
Source File: ZonedDateTime.java From Bytecoder with Apache License 2.0 | 4 votes |
/** * Obtains an instance of {@code ZonedDateTime} from a temporal object. * <p> * This obtains a zoned date-time based on the specified temporal. * A {@code TemporalAccessor} represents an arbitrary set of date and time information, * which this factory converts to an instance of {@code ZonedDateTime}. * <p> * The conversion will first obtain a {@code ZoneId} from the temporal object, * falling back to a {@code ZoneOffset} if necessary. It will then try to obtain * an {@code Instant}, falling back to a {@code LocalDateTime} if necessary. * The result will be either the combination of {@code ZoneId} or {@code ZoneOffset} * with {@code Instant} or {@code LocalDateTime}. * Implementations are permitted to perform optimizations such as accessing * those fields that are equivalent to the relevant objects. * <p> * This method matches the signature of the functional interface {@link TemporalQuery} * allowing it to be used as a query via method reference, {@code ZonedDateTime::from}. * * @param temporal the temporal object to convert, not null * @return the zoned date-time, not null * @throws DateTimeException if unable to convert to an {@code ZonedDateTime} */ public static ZonedDateTime from(TemporalAccessor temporal) { if (temporal instanceof ZonedDateTime) { return (ZonedDateTime) temporal; } try { ZoneId zone = ZoneId.from(temporal); if (temporal.isSupported(INSTANT_SECONDS)) { long epochSecond = temporal.getLong(INSTANT_SECONDS); int nanoOfSecond = temporal.get(NANO_OF_SECOND); return create(epochSecond, nanoOfSecond, zone); } else { LocalDate date = LocalDate.from(temporal); LocalTime time = LocalTime.from(temporal); return of(date, time, zone); } } catch (DateTimeException ex) { throw new DateTimeException("Unable to obtain ZonedDateTime from TemporalAccessor: " + temporal + " of type " + temporal.getClass().getName(), ex); } }
Example 11
Source File: ZonedDateTime.java From openjdk-jdk8u-backup with GNU General Public License v2.0 | 4 votes |
/** * Obtains an instance of {@code ZonedDateTime} from a temporal object. * <p> * This obtains a zoned date-time based on the specified temporal. * A {@code TemporalAccessor} represents an arbitrary set of date and time information, * which this factory converts to an instance of {@code ZonedDateTime}. * <p> * The conversion will first obtain a {@code ZoneId} from the temporal object, * falling back to a {@code ZoneOffset} if necessary. It will then try to obtain * an {@code Instant}, falling back to a {@code LocalDateTime} if necessary. * The result will be either the combination of {@code ZoneId} or {@code ZoneOffset} * with {@code Instant} or {@code LocalDateTime}. * Implementations are permitted to perform optimizations such as accessing * those fields that are equivalent to the relevant objects. * <p> * This method matches the signature of the functional interface {@link TemporalQuery} * allowing it to be used as a query via method reference, {@code ZonedDateTime::from}. * * @param temporal the temporal object to convert, not null * @return the zoned date-time, not null * @throws DateTimeException if unable to convert to an {@code ZonedDateTime} */ public static ZonedDateTime from(TemporalAccessor temporal) { if (temporal instanceof ZonedDateTime) { return (ZonedDateTime) temporal; } try { ZoneId zone = ZoneId.from(temporal); if (temporal.isSupported(INSTANT_SECONDS)) { long epochSecond = temporal.getLong(INSTANT_SECONDS); int nanoOfSecond = temporal.get(NANO_OF_SECOND); return create(epochSecond, nanoOfSecond, zone); } else { LocalDate date = LocalDate.from(temporal); LocalTime time = LocalTime.from(temporal); return of(date, time, zone); } } catch (DateTimeException ex) { throw new DateTimeException("Unable to obtain ZonedDateTime from TemporalAccessor: " + temporal + " of type " + temporal.getClass().getName(), ex); } }
Example 12
Source File: ZonedDateTime.java From jdk8u-jdk with GNU General Public License v2.0 | 4 votes |
/** * Obtains an instance of {@code ZonedDateTime} from a temporal object. * <p> * This obtains a zoned date-time based on the specified temporal. * A {@code TemporalAccessor} represents an arbitrary set of date and time information, * which this factory converts to an instance of {@code ZonedDateTime}. * <p> * The conversion will first obtain a {@code ZoneId} from the temporal object, * falling back to a {@code ZoneOffset} if necessary. It will then try to obtain * an {@code Instant}, falling back to a {@code LocalDateTime} if necessary. * The result will be either the combination of {@code ZoneId} or {@code ZoneOffset} * with {@code Instant} or {@code LocalDateTime}. * Implementations are permitted to perform optimizations such as accessing * those fields that are equivalent to the relevant objects. * <p> * This method matches the signature of the functional interface {@link TemporalQuery} * allowing it to be used as a query via method reference, {@code ZonedDateTime::from}. * * @param temporal the temporal object to convert, not null * @return the zoned date-time, not null * @throws DateTimeException if unable to convert to an {@code ZonedDateTime} */ public static ZonedDateTime from(TemporalAccessor temporal) { if (temporal instanceof ZonedDateTime) { return (ZonedDateTime) temporal; } try { ZoneId zone = ZoneId.from(temporal); if (temporal.isSupported(INSTANT_SECONDS)) { long epochSecond = temporal.getLong(INSTANT_SECONDS); int nanoOfSecond = temporal.get(NANO_OF_SECOND); return create(epochSecond, nanoOfSecond, zone); } else { LocalDate date = LocalDate.from(temporal); LocalTime time = LocalTime.from(temporal); return of(date, time, zone); } } catch (DateTimeException ex) { throw new DateTimeException("Unable to obtain ZonedDateTime from TemporalAccessor: " + temporal + " of type " + temporal.getClass().getName(), ex); } }
Example 13
Source File: ZonedDateTime.java From openjdk-jdk8u with GNU General Public License v2.0 | 4 votes |
/** * Obtains an instance of {@code ZonedDateTime} from a temporal object. * <p> * This obtains a zoned date-time based on the specified temporal. * A {@code TemporalAccessor} represents an arbitrary set of date and time information, * which this factory converts to an instance of {@code ZonedDateTime}. * <p> * The conversion will first obtain a {@code ZoneId} from the temporal object, * falling back to a {@code ZoneOffset} if necessary. It will then try to obtain * an {@code Instant}, falling back to a {@code LocalDateTime} if necessary. * The result will be either the combination of {@code ZoneId} or {@code ZoneOffset} * with {@code Instant} or {@code LocalDateTime}. * Implementations are permitted to perform optimizations such as accessing * those fields that are equivalent to the relevant objects. * <p> * This method matches the signature of the functional interface {@link TemporalQuery} * allowing it to be used as a query via method reference, {@code ZonedDateTime::from}. * * @param temporal the temporal object to convert, not null * @return the zoned date-time, not null * @throws DateTimeException if unable to convert to an {@code ZonedDateTime} */ public static ZonedDateTime from(TemporalAccessor temporal) { if (temporal instanceof ZonedDateTime) { return (ZonedDateTime) temporal; } try { ZoneId zone = ZoneId.from(temporal); if (temporal.isSupported(INSTANT_SECONDS)) { long epochSecond = temporal.getLong(INSTANT_SECONDS); int nanoOfSecond = temporal.get(NANO_OF_SECOND); return create(epochSecond, nanoOfSecond, zone); } else { LocalDate date = LocalDate.from(temporal); LocalTime time = LocalTime.from(temporal); return of(date, time, zone); } } catch (DateTimeException ex) { throw new DateTimeException("Unable to obtain ZonedDateTime from TemporalAccessor: " + temporal + " of type " + temporal.getClass().getName(), ex); } }
Example 14
Source File: ZonedDateTime.java From desugar_jdk_libs with GNU General Public License v2.0 | 4 votes |
/** * Obtains an instance of {@code ZonedDateTime} from a temporal object. * <p> * This obtains a zoned date-time based on the specified temporal. * A {@code TemporalAccessor} represents an arbitrary set of date and time information, * which this factory converts to an instance of {@code ZonedDateTime}. * <p> * The conversion will first obtain a {@code ZoneId} from the temporal object, * falling back to a {@code ZoneOffset} if necessary. It will then try to obtain * an {@code Instant}, falling back to a {@code LocalDateTime} if necessary. * The result will be either the combination of {@code ZoneId} or {@code ZoneOffset} * with {@code Instant} or {@code LocalDateTime}. * Implementations are permitted to perform optimizations such as accessing * those fields that are equivalent to the relevant objects. * <p> * This method matches the signature of the functional interface {@link TemporalQuery} * allowing it to be used as a query via method reference, {@code ZonedDateTime::from}. * * @param temporal the temporal object to convert, not null * @return the zoned date-time, not null * @throws DateTimeException if unable to convert to an {@code ZonedDateTime} */ public static ZonedDateTime from(TemporalAccessor temporal) { if (temporal instanceof ZonedDateTime) { return (ZonedDateTime) temporal; } try { ZoneId zone = ZoneId.from(temporal); if (temporal.isSupported(INSTANT_SECONDS)) { long epochSecond = temporal.getLong(INSTANT_SECONDS); int nanoOfSecond = temporal.get(NANO_OF_SECOND); return create(epochSecond, nanoOfSecond, zone); } else { LocalDate date = LocalDate.from(temporal); LocalTime time = LocalTime.from(temporal); return of(date, time, zone); } } catch (DateTimeException ex) { throw new DateTimeException("Unable to obtain ZonedDateTime from TemporalAccessor: " + temporal + " of type " + temporal.getClass().getName(), ex); } }
Example 15
Source File: DateTimeUtility.java From sailfish-core with Apache License 2.0 | 4 votes |
private static int getOrDefault(TemporalAccessor temporalAccessor, TemporalField field, int defaultValue) { return temporalAccessor.isSupported(field) ? temporalAccessor.get(field) : defaultValue; }
Example 16
Source File: ConfiguredObjectExpressionFactory.java From qpid-broker-j with Apache License 2.0 | 4 votes |
@Override ConfiguredObjectExpression asExpression(final List<Expression> args) { if (args == null || args.size() != 1) { throw new IllegalArgumentException(TO_DATE.name() + " requires a single argument."); } return new ConfiguredObjectExpression() { @Override public Object evaluate(final ConfiguredObject<?> object) { Object dateTime = args.get(0).evaluate(object); if (!(dateTime instanceof String)) { throw new IllegalArgumentException(TO_DATE.name() + " requires a string argument, not a " + dateTime.getClass()); } try { return DateTimeFormatter.ISO_ZONED_DATE_TIME.parse((String)dateTime) .query(this::convertToDate); } catch (DateTimeParseException e1) { throw new IllegalArgumentException(TO_DATE + " requires an ISO-8601 format date or date/time.", e1); } } private Date convertToDate(TemporalAccessor t) { if(!t.isSupported(ChronoField.INSTANT_SECONDS)) { t = LocalDateTime.of(LocalDate.from(t), LocalTime.MIN).atOffset(ZoneOffset.UTC); } return new Date((t.getLong(ChronoField.INSTANT_SECONDS) * 1000L) + t.getLong(ChronoField.MILLI_OF_SECOND)); } }; }
Example 17
Source File: ZonedDateTime.java From TencentKona-8 with GNU General Public License v2.0 | 4 votes |
/** * Obtains an instance of {@code ZonedDateTime} from a temporal object. * <p> * This obtains a zoned date-time based on the specified temporal. * A {@code TemporalAccessor} represents an arbitrary set of date and time information, * which this factory converts to an instance of {@code ZonedDateTime}. * <p> * The conversion will first obtain a {@code ZoneId} from the temporal object, * falling back to a {@code ZoneOffset} if necessary. It will then try to obtain * an {@code Instant}, falling back to a {@code LocalDateTime} if necessary. * The result will be either the combination of {@code ZoneId} or {@code ZoneOffset} * with {@code Instant} or {@code LocalDateTime}. * Implementations are permitted to perform optimizations such as accessing * those fields that are equivalent to the relevant objects. * <p> * This method matches the signature of the functional interface {@link TemporalQuery} * allowing it to be used as a query via method reference, {@code ZonedDateTime::from}. * * @param temporal the temporal object to convert, not null * @return the zoned date-time, not null * @throws DateTimeException if unable to convert to an {@code ZonedDateTime} */ public static ZonedDateTime from(TemporalAccessor temporal) { if (temporal instanceof ZonedDateTime) { return (ZonedDateTime) temporal; } try { ZoneId zone = ZoneId.from(temporal); if (temporal.isSupported(INSTANT_SECONDS)) { long epochSecond = temporal.getLong(INSTANT_SECONDS); int nanoOfSecond = temporal.get(NANO_OF_SECOND); return create(epochSecond, nanoOfSecond, zone); } else { LocalDate date = LocalDate.from(temporal); LocalTime time = LocalTime.from(temporal); return of(date, time, zone); } } catch (DateTimeException ex) { throw new DateTimeException("Unable to obtain ZonedDateTime from TemporalAccessor: " + temporal + " of type " + temporal.getClass().getName(), ex); } }
Example 18
Source File: ZonedDateTime.java From openjdk-jdk9 with GNU General Public License v2.0 | 4 votes |
/** * Obtains an instance of {@code ZonedDateTime} from a temporal object. * <p> * This obtains a zoned date-time based on the specified temporal. * A {@code TemporalAccessor} represents an arbitrary set of date and time information, * which this factory converts to an instance of {@code ZonedDateTime}. * <p> * The conversion will first obtain a {@code ZoneId} from the temporal object, * falling back to a {@code ZoneOffset} if necessary. It will then try to obtain * an {@code Instant}, falling back to a {@code LocalDateTime} if necessary. * The result will be either the combination of {@code ZoneId} or {@code ZoneOffset} * with {@code Instant} or {@code LocalDateTime}. * Implementations are permitted to perform optimizations such as accessing * those fields that are equivalent to the relevant objects. * <p> * This method matches the signature of the functional interface {@link TemporalQuery} * allowing it to be used as a query via method reference, {@code ZonedDateTime::from}. * * @param temporal the temporal object to convert, not null * @return the zoned date-time, not null * @throws DateTimeException if unable to convert to an {@code ZonedDateTime} */ public static ZonedDateTime from(TemporalAccessor temporal) { if (temporal instanceof ZonedDateTime) { return (ZonedDateTime) temporal; } try { ZoneId zone = ZoneId.from(temporal); if (temporal.isSupported(INSTANT_SECONDS)) { long epochSecond = temporal.getLong(INSTANT_SECONDS); int nanoOfSecond = temporal.get(NANO_OF_SECOND); return create(epochSecond, nanoOfSecond, zone); } else { LocalDate date = LocalDate.from(temporal); LocalTime time = LocalTime.from(temporal); return of(date, time, zone); } } catch (DateTimeException ex) { throw new DateTimeException("Unable to obtain ZonedDateTime from TemporalAccessor: " + temporal + " of type " + temporal.getClass().getName(), ex); } }
Example 19
Source File: ZonedDateTime.java From dragonwell8_jdk with GNU General Public License v2.0 | 4 votes |
/** * Obtains an instance of {@code ZonedDateTime} from a temporal object. * <p> * This obtains a zoned date-time based on the specified temporal. * A {@code TemporalAccessor} represents an arbitrary set of date and time information, * which this factory converts to an instance of {@code ZonedDateTime}. * <p> * The conversion will first obtain a {@code ZoneId} from the temporal object, * falling back to a {@code ZoneOffset} if necessary. It will then try to obtain * an {@code Instant}, falling back to a {@code LocalDateTime} if necessary. * The result will be either the combination of {@code ZoneId} or {@code ZoneOffset} * with {@code Instant} or {@code LocalDateTime}. * Implementations are permitted to perform optimizations such as accessing * those fields that are equivalent to the relevant objects. * <p> * This method matches the signature of the functional interface {@link TemporalQuery} * allowing it to be used as a query via method reference, {@code ZonedDateTime::from}. * * @param temporal the temporal object to convert, not null * @return the zoned date-time, not null * @throws DateTimeException if unable to convert to an {@code ZonedDateTime} */ public static ZonedDateTime from(TemporalAccessor temporal) { if (temporal instanceof ZonedDateTime) { return (ZonedDateTime) temporal; } try { ZoneId zone = ZoneId.from(temporal); if (temporal.isSupported(INSTANT_SECONDS)) { long epochSecond = temporal.getLong(INSTANT_SECONDS); int nanoOfSecond = temporal.get(NANO_OF_SECOND); return create(epochSecond, nanoOfSecond, zone); } else { LocalDate date = LocalDate.from(temporal); LocalTime time = LocalTime.from(temporal); return of(date, time, zone); } } catch (DateTimeException ex) { throw new DateTimeException("Unable to obtain ZonedDateTime from TemporalAccessor: " + temporal + " of type " + temporal.getClass().getName(), ex); } }
Example 20
Source File: ZonedDateTime.java From jdk1.8-source-analysis with Apache License 2.0 | 4 votes |
/** * Obtains an instance of {@code ZonedDateTime} from a temporal object. * <p> * This obtains a zoned date-time based on the specified temporal. * A {@code TemporalAccessor} represents an arbitrary set of date and time information, * which this factory converts to an instance of {@code ZonedDateTime}. * <p> * The conversion will first obtain a {@code ZoneId} from the temporal object, * falling back to a {@code ZoneOffset} if necessary. It will then try to obtain * an {@code Instant}, falling back to a {@code LocalDateTime} if necessary. * The result will be either the combination of {@code ZoneId} or {@code ZoneOffset} * with {@code Instant} or {@code LocalDateTime}. * Implementations are permitted to perform optimizations such as accessing * those fields that are equivalent to the relevant objects. * <p> * This method matches the signature of the functional interface {@link TemporalQuery} * allowing it to be used as a query via method reference, {@code ZonedDateTime::from}. * * @param temporal the temporal object to convert, not null * @return the zoned date-time, not null * @throws DateTimeException if unable to convert to an {@code ZonedDateTime} */ public static ZonedDateTime from(TemporalAccessor temporal) { if (temporal instanceof ZonedDateTime) { return (ZonedDateTime) temporal; } try { ZoneId zone = ZoneId.from(temporal); if (temporal.isSupported(INSTANT_SECONDS)) { long epochSecond = temporal.getLong(INSTANT_SECONDS); int nanoOfSecond = temporal.get(NANO_OF_SECOND); return create(epochSecond, nanoOfSecond, zone); } else { LocalDate date = LocalDate.from(temporal); LocalTime time = LocalTime.from(temporal); return of(date, time, zone); } } catch (DateTimeException ex) { throw new DateTimeException("Unable to obtain ZonedDateTime from TemporalAccessor: " + temporal + " of type " + temporal.getClass().getName(), ex); } }