A Clojure library that defines literals for java.time classes.
OTHER License
A Clojure library that defines literals for java.time classes.
It does this by registering edn tags for reading, and adding handlers for
clojure.core/print-method
and clojure.core/print-dup
.
Add [java-time-literals "2018-04-06"]
to :dependencies
in your project.clj
.
Require the library and start using literals:
(require 'java-time-literals.core)
#time/dur "PT15M" ;; Duration
#time/inst "2007-12-03T10:15:30.00Z" ;; Instant
#time/ld "2007-12-03" ;; LocalDate
#time/ldt "2007-12-03T10:15:30" ;; LocalDateTime
#time/lt "10:15:30" ;; LocalTime
#time/md "--12-03" ;; MonthDay
#time/odt "2007-12-03T10:15:30+01:00" ;; OffsetDateTime
#time/ot "10:15:30+01:00" ;; OffsetTime
#time/period "P3M" ;; Period
#time/y "2007" ;; Year
#time/ym "2007-12" ;; YearMonth
#time/zdt "2007-12-03T10:15:30+01:00[Europe/Paris]" ;; ZonedDateTime
#time/zid "Europe/Paris" ;; ZoneId
#time/zoffset "+02:00" ;; ZoneOffset
You'll notice that most of these are quite short. The idea is that you're using literals to keep things terse. Readability comes as much from the format string as the tag name.
If you want to use these literals in your tests, but don't have a natural main
function or entry point to hold the require, you might find yourself requiring
the namespace again and again. Instead, you can add an injection to your
project.clj
:
:injections [(require 'java-time-literals.core)]
Enum tags are represented with keywords.
;; ChronoUnit
#time/unit :centuries
#time/unit :days
#time/unit :decades
#time/unit :eras
#time/unit :forever
#time/unit :half-days
#time/unit :hours
#time/unit :micros
#time/unit :millennia
#time/unit :millis
#time/unit :minutes
#time/unit :months
#time/unit :nanos
#time/unit :seconds
#time/unit :weeks
#time/unit :years
;; ChronoField
#time/field :aligned-day-of-week-in-month
#time/field :aligned-day-of-week-in-year
#time/field :aligned-week-of-month
#time/field :aligned-week-of-year
#time/field :ampm-of-day
#time/field :clock-hour-of-ampm
#time/field :clock-hour-of-day
#time/field :day-of-month
#time/field :day-of-week
#time/field :day-of-year
#time/field :epoch-day
#time/field :era
#time/field :hour-of-ampm
#time/field :hour-of-day
#time/field :instant-seconds
#time/field :micro-of-day
#time/field :micro-of-second
#time/field :milli-of-day
#time/field :milli-of-second
#time/field :minute-of-day
#time/field :minute-of-hour
#time/field :month-of-year
#time/field :nano-of-day
#time/field :nano-of-second
#time/field :offset-seconds
#time/field :proleptic-month
#time/field :second-of-day
#time/field :second-of-minute
#time/field :year
#time/field :year-of-era
;; Month
#time/month :january
#time/month :february
#time/month :march
#time/month :april
#time/month :may
#time/month :june
#time/month :july
#time/month :august
#time/month :september
#time/month :october
#time/month :november
#time/month :december
;; DayOfWeek
#time/day :monday
#time/day :tuesday
#time/day :wednesday
#time/day :thursday
#time/day :friday
#time/day :saturday
#time/day :sunday
Copyright © (iterate inc 2018) Magnar Sveen
BSD-3-Clause, see LICENSE