8 | data JSDate : Type where [external]
10 | %foreign "javascript:lambda:(w) => new Date(Number(w))"
11 | prim__date : Bits64 -> JSDate
13 | %foreign "javascript:lambda:(w) => new Date(w)"
14 | prim__stringDate : String -> JSDate
16 | %foreign "javascript:lambda:(w) => w.toLocaleDateString()"
17 | prim__toLocaleDateString : JSDate -> String
19 | %foreign "javascript:lambda:(w) => w.toLocaleTimeString()"
20 | prim__toLocaleTimeString : JSDate -> String
22 | %foreign "javascript:lambda:(d) => BigInt(d.getTime())"
23 | prim__getTime : JSDate -> Bits64
25 | %foreign "javascript:lambda:(d) => BigInt(d.getFullYear())"
26 | prim__getFullYear : JSDate -> Bits64
28 | %foreign "javascript:lambda:(d) => BigInt(d.getMonth())"
29 | prim__getMonth : JSDate -> Bits64
31 | %foreign "javascript:lambda:(d) => BigInt(d.getDate())"
32 | prim__getDate : JSDate -> Bits64
35 | Cast Bits64 JSDate where cast = prim__date
38 | Cast String JSDate where cast = prim__stringDate
41 | toLocaleDateString : JSDate -> String
42 | toLocaleDateString = prim__toLocaleDateString
45 | toLocaleTimeString : JSDate -> String
46 | toLocaleTimeString = prim__toLocaleTimeString
49 | getTime : JSDate -> Bits64
50 | getTime = prim__getTime
53 | getFullYear : JSDate -> Bits64
54 | getFullYear = prim__getFullYear
57 | getMonth : JSDate -> Bits64
58 | getMonth = prim__getMonth
61 | getDate : JSDate -> Bits64
62 | getDate = prim__getDate
64 | pad2 : Bits64 -> String
65 | pad2 v = padLeft 2 '0' (show v)
69 | dateString : Bits64 -> String
71 | let d := cast {to = JSDate} ts
72 | in "\{show $ getFullYear d}-\{pad2 $ getMonth d + 1}-\{pad2 $ getDate d}"