-
Notifications
You must be signed in to change notification settings - Fork 8
/
date.cljs
51 lines (45 loc) · 1.23 KB
/
date.cljs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
(ns komponentit.date
(:require [goog.string :as gs]
goog.date.Date)
(:import [goog.i18n DateTimeFormat DateTimeParse]))
(defn jsdate->local-date [v]
(if v
(doto (goog.date.Date.)
(.setYear (.getFullYear v))
(.setMonth (.getMonth v))
(.setDate (.getDate v)))))
(defn jsdate->date-time [v]
(if v
(doto (goog.date.UtcDateTime.)
(.setYear (.getFullYear v))
(.setMonth (.getMonth v))
(.setDate (.getDate v))
(.setHours 0)
(.setMinutes 0)
(.setSeconds 0))))
(defn local-date->jsdate [v]
(if v
(doto (js/Date.)
(.setYear (.getFullYear v))
(.setMonth (.getMonth v))
(.setDate (.getDate v))
(.setHours 0)
(.setMinutes 0)
(.setSeconds 0))))
(defn date-time->jsdate [v]
(if v
(doto (js/Date.)
(.setYear (.getFullYear v))
(.setMonth (.getMonth v))
(.setDate (.getDate v))
(.setHours (.getHours v))
(.setMinutes (.getMinutes v))
(.setSeconds (.getSeconds v)))))
(defn date-format [d f]
(if d
(.format (DateTimeFormat. f) d)))
(defn date-read [s f]
(let [date (goog.date.Date. 0 0 0)]
(.parse (DateTimeParse. f) s date #js{:validate true})
(if (not= 0 (.getYear date))
date)))