forked from elm/core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Date.js
39 lines (32 loc) · 1.32 KB
/
Date.js
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
Elm.Native.Date = {};
Elm.Native.Date.make = function(elm) {
elm.Native = elm.Native || {};
elm.Native.Date = elm.Native.Date || {};
if (elm.Native.Date.values) return elm.Native.Date.values;
var Result = Elm.Result.make(elm);
function dateNow() {
return new window.Date;
}
function readDate(str) {
var date = new window.Date(str);
return isNaN(date.getTime())
? Result.Err("unable to parse '" + str + "' as a date")
: Result.Ok(date);
}
var dayTable = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
var monthTable =
["Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
return elm.Native.Date.values = {
read : readDate,
year : function(d) { return d.getFullYear(); },
month : function(d) { return { ctor:monthTable[d.getMonth()] }; },
day : function(d) { return d.getDate(); },
hour : function(d) { return d.getHours(); },
minute : function(d) { return d.getMinutes(); },
second : function(d) { return d.getSeconds(); },
toTime : function(d) { return d.getTime(); },
fromTime: function(t) { return new window.Date(t); },
dayOfWeek : function(d) { return { ctor:dayTable[d.getDay()] }; }
};
};