1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package dev.metaschema.core.metapath.item.atomic;
7   
8   import java.time.ZoneOffset;
9   import java.time.ZonedDateTime;
10  
11  import edu.umd.cs.findbugs.annotations.NonNull;
12  
13  /**
14   * A temporal valued item related to a {@link ZonedDateTime}.
15   * <p>
16   * This may represent a specific point in time or a 24 hour period in time.
17   */
18  public interface ICalendarTemporalItem extends ITemporalItem {
19  
20    /**
21     * Get the temporal value as a {@link ZonedDateTime}.
22     *
23     * @return the date/time value
24     */
25    @NonNull
26    ZonedDateTime asZonedDateTime();
27  
28    @Override
29    default ZoneOffset getZoneOffset() {
30      return hasTimezone() ? asZonedDateTime().getOffset() : null;
31    }
32  }