Files
CljElixir/stubs/DateTime.clj
2026-03-09 23:09:46 -04:00

156 lines
3.9 KiB
Clojure

(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])