    (LocalDate/of year month day-of-month)))
 
 (defn local-time
+  "Coerce to local time.
+   Can also be used to parse a local time using a custom formatter, or to create
+   a time from hours, minutes, seconds and nanoseconds.
+   Examples:
+
+     => (local-time) ; Current time
+     #<LocalTime 12:15:00.123>
+     => (local-time (clock))
+     #<LocalTime 12:15:00.123>
+     => (local-time (zone-id \"Asia/Shanghai\")) ; Current time in Shanghai
+     #<LocalTime 17:15:00.123>
+     => (local-time \"12:15\")
+     #<LocalTime 12:15>
+     => (local-time \"12:15:00.123\")
+     #<LocalTime 12:15:00.123>
+     => (local-time :noon)
+     #<LocalTime 12:00>
+     => (local-time (local-date-time)) ; Time part of local date-time
+     #<LocalTime 12:15:00.123>
+     => (local-time \"12.15\" (date-time-formatter \"HH.mm\"))
+     #<LocalTime 12:15>
+     => (local-time 12 15)
+     #<LocalTime 12:15>
+     => (local-time 12 15 0)
+     #<LocalTime 12:15>
+     => (local-time 12 15 0 123000000)
+     #<LocalTime 12:15:00.123>"
   ([]
    (LocalTime/now))
   ([x]

     string? (LocalTime/parse x)
     keyword? (local-time-keywords x)
     :else (LocalTime/from x)))
  ([text formatter]
   (LocalTime/parse text formatter)))

(defn offset-time
  ([]
   (OffsetTime/now))
  ([x]

  [x] (instance? DayOfWeek x))

(defn zone-id?
  "Returns true if the given value is a time zone.
   Examples:

     => (zone-id? (zone-id \"Europe/Helsinki\"))
     true
     => (zone-id? (zone-offset :utc))
     true
     => (zone-id? (hours 1))
     false"
  [x] (instance? ZoneId x))

(defn zone-offset?
  "Returns true if the given value is a zone offset.
   Examples:

     => (zone-offset? (zone-offset :utc))
     true
     => (zone-offset? (zone-id \"Europe/Helsinki\"))
     false"
  [x] (instance? ZoneOffset x))

(defn clock?
