(ns DateTime "Elixir DateTime module — date and time with timezone. In CljElixir: (DateTime/utc-now), (DateTime/to-iso8601 dt), etc.") (defn utc-now "Returns the current UTC datetime. (DateTime/utc-now) ;=> ~U[2024-03-09 12:00:00Z] (DateTime/utc-now Calendar.ISO)" ([]) ([calendar])) (defn now "Returns the current datetime for a timezone. (DateTime/now \"Etc/UTC\") ;=> {:ok datetime}" ([timezone]) ([timezone calendar])) (defn now! "Returns the current datetime. Raises on error. (DateTime/now! \"Etc/UTC\")" ([timezone]) ([timezone calendar])) (defn new "Creates a new DateTime. (DateTime/new 2024 3 9 12 0 0)" ([date time]) ([date time timezone]) ([date time timezone database])) (defn new! "Creates a new DateTime. Raises on error." ([date time]) ([date time timezone]) ([date time timezone database])) (defn from-unix "Converts Unix timestamp to DateTime. (DateTime/from-unix 1709985600) ;=> {:ok datetime} (DateTime/from-unix 1709985600000 :millisecond)" ([integer]) ([integer unit]) ([integer unit calendar])) (defn from-unix! "Converts Unix timestamp. Raises on error. (DateTime/from-unix! 1709985600)" ([integer]) ([integer unit]) ([integer unit calendar])) (defn to-unix "Converts DateTime to Unix timestamp. (DateTime/to-unix datetime) ;=> 1709985600 (DateTime/to-unix datetime :millisecond)" ([datetime]) ([datetime unit])) (defn from-iso8601 "Parses ISO 8601 string. Returns {:ok datetime utc-offset}. (DateTime/from-iso8601 \"2024-03-09T12:00:00Z\") ;=> {:ok datetime 0}" ([string]) ([string calendar-or-format])) (defn from-iso8601! "Parses ISO 8601. Raises on error." ([string]) ([string calendar-or-format])) (defn to-iso8601 "Converts to ISO 8601 string. (DateTime/to-iso8601 datetime) ;=> \"2024-03-09T12:00:00Z\"" ([datetime]) ([datetime format]) ([datetime format offset])) (defn to-string "Converts to human-readable string. (DateTime/to-string datetime) ;=> \"2024-03-09 12:00:00Z\"" [datetime]) (defn to-date "Extracts the Date part. (DateTime/to-date datetime) ;=> ~D[2024-03-09]" [datetime]) (defn to-time "Extracts the Time part. (DateTime/to-time datetime) ;=> ~T[12:00:00]" [datetime]) (defn to-naive "Converts to NaiveDateTime (drops timezone info). (DateTime/to-naive datetime) ;=> ~N[2024-03-09 12:00:00]" [datetime]) (defn from-naive "Converts NaiveDateTime to DateTime with timezone. (DateTime/from-naive naive \"Etc/UTC\") ;=> {:ok datetime}" ([naive-datetime timezone]) ([naive-datetime timezone database])) (defn from-naive! "Converts NaiveDateTime. Raises on error." ([naive-datetime timezone]) ([naive-datetime timezone database])) (defn add "Adds `amount` of time to a datetime. (DateTime/add datetime 3600) ;=> +1 hour (DateTime/add datetime 1 :hour)" ([datetime amount]) ([datetime amount unit])) (defn diff "Returns the difference between two datetimes. (DateTime/diff dt1 dt2) ;=> seconds (DateTime/diff dt1 dt2 :hour) ;=> hours" ([datetime1 datetime2]) ([datetime1 datetime2 unit])) (defn shift-zone "Shifts datetime to a different timezone. (DateTime/shift-zone datetime \"America/New_York\")" ([datetime timezone]) ([datetime timezone database])) (defn shift-zone! "Shifts timezone. Raises on error." ([datetime timezone]) ([datetime timezone database])) (defn truncate "Truncates datetime to given precision. (DateTime/truncate datetime :second)" [datetime precision]) (defn compare "Compares two datetimes. Returns :lt, :eq, or :gt. (DateTime/compare dt1 dt2) ;=> :lt" [datetime1 datetime2]) (defn before? "Returns true if `datetime1` is before `datetime2`." [datetime1 datetime2]) (defn after? "Returns true if `datetime1` is after `datetime2`." [datetime1 datetime2]) (defn shift "Shifts datetime by a duration. (DateTime/shift datetime :hour 1 :minute 30)" [datetime duration])