1export function createDate(y, m, d, h, M, s, ms) {
2 // can't just apply() to create a date:
3 // https://stackoverflow.com/q/181348
4 var date;
5 // the date constructor remaps years 0-99 to 1900-1999
6 if (y < 100 && y >= 0) {
7 // preserve leap years using a full 400 year cycle, then reset
8 date = new Date(y + 400, m, d, h, M, s, ms);
9 if (isFinite(date.getFullYear())) {
10 date.setFullYear(y);
11 }
12 } else {
13 date = new Date(y, m, d, h, M, s, ms);
14 }
15
16 return date;
17}
18
19export function createUTCDate(y) {
20 var date, args;
21 // the Date.UTC function remaps years 0-99 to 1900-1999
22 if (y < 100 && y >= 0) {
23 args = Array.prototype.slice.call(arguments);
24 // preserve leap years using a full 400 year cycle, then reset
25 args[0] = y + 400;
26 date = new Date(Date.UTC.apply(null, args));
27 if (isFinite(date.getUTCFullYear())) {
28 date.setUTCFullYear(y);
29 }
30 } else {
31 date = new Date(Date.UTC.apply(null, arguments));
32 }
33
34 return date;
35}