UNPKG

date-and-time

Version:

A Minimalist DateTime utility for Node.js and the browser

1,043 lines (1,038 loc) 90.5 kB
/*global describe, it */ import expect from 'expect.js'; import date from 'date-and-time'; describe('format', () => { it('"YYYY" equals to "0001"', function () { var now = new Date(0, -1899 * 12, 1); expect(date.format(now, 'YYYY')).to.equal('0001'); }); it('"YYYY" equals to "0099"', function () { var now = new Date(0, -1801 * 12, 1); expect(date.format(now, 'YYYY')).to.equal('0099'); }); it('"YYYY" equals to "0100"', function () { var now = new Date(100, 0, 1); expect(date.format(now, 'YYYY')).to.equal('0100'); }); it('"YYYY" equals to "1800"', function () { var now = new Date(1800, 0, 1); expect(date.format(now, 'YYYY')).to.equal('1800'); }); it('"YYYY" equals to "1899"', function () { var now = new Date(1899, 0, 1); expect(date.format(now, 'YYYY')).to.equal('1899'); }); it('"YYYY" equals to "1900"', function () { var now = new Date(1900, 0, 1); expect(date.format(now, 'YYYY')).to.equal('1900'); }); it('"YYYY" equals to "1901"', function () { var now = new Date(1901, 0, 1); expect(date.format(now, 'YYYY')).to.equal('1901'); }); it('"YYYY" equals to "1970"', function () { var now = new Date(1970, 0, 1); expect(date.format(now, 'YYYY')).to.equal('1970'); }); it('"YYYY" equals to "1999"', function () { var now = new Date(1999, 0, 1); expect(date.format(now, 'YYYY')).to.equal('1999'); }); it('"YYYY" equals to "2000"', function () { var now = new Date(2000, 0, 1); expect(date.format(now, 'YYYY')).to.equal('2000'); }); it('"YYYY" equals to "2001"', function () { var now = new Date(2001, 0, 1); expect(date.format(now, 'YYYY')).to.equal('2001'); }); it('"YYYY" equals to "9999"', function () { var now = new Date(9999, 0, 1); expect(date.format(now, 'YYYY')).to.equal('9999'); }); it('"YYYY" as UTC equals to "XXXX"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789), utc = true; expect(date.format(now, 'YYYY', utc)).to.equal('' + now.getUTCFullYear()); }); it('"YY" equals to "00"', function () { var now = new Date(0, 0, 1); expect(date.format(now, 'YY')).to.equal('00'); }); it('"YY" equals to "01"', function () { var now = new Date(0, -1899 * 12, 1); expect(date.format(now, 'YY')).to.equal('01'); }); it('"YY" equals to "99"', function () { var now = new Date(0, -1801 * 12, 1); expect(date.format(now, 'YY')).to.equal('99'); }); it('"YY" equals to "00"', function () { var now = new Date(100, 0, 1); expect(date.format(now, 'YY')).to.equal('00'); }); it('"YY" equals to "01"', function () { var now = new Date(101, 0, 1); expect(date.format(now, 'YY')).to.equal('01'); }); it('"YY" equals to "99"', function () { var now = new Date(199, 0, 1); expect(date.format(now, 'YY')).to.equal('99'); }); it('"YY" equals to "00"', function () { var now = new Date(1900, 0, 1); expect(date.format(now, 'YY')).to.equal('00'); }); it('"YY" equals to "01"', function () { var now = new Date(1901, 0, 1); expect(date.format(now, 'YY')).to.equal('01'); }); it('"YY" equals to "99"', function () { var now = new Date(1999, 0, 1); expect(date.format(now, 'YY')).to.equal('99'); }); it('"YY" equals to "00"', function () { var now = new Date(2000, 0, 1); expect(date.format(now, 'YY')).to.equal('00'); }); it('"YY" equals to "01"', function () { var now = new Date(2001, 0, 1); expect(date.format(now, 'YY')).to.equal('01'); }); it('"YY" equals to "99"', function () { var now = new Date(2099, 0, 1); expect(date.format(now, 'YY')).to.equal('99'); }); it('"YY" equals to "00"', function () { var now = new Date(9900, 0, 1); expect(date.format(now, 'YY')).to.equal('00'); }); it('"YY" equals to "01"', function () { var now = new Date(9901, 0, 1); expect(date.format(now, 'YY')).to.equal('01'); }); it('"YY" equals to "99"', function () { var now = new Date(9999, 0, 1); expect(date.format(now, 'YY')).to.equal('99'); }); it('"YY" as UTC equals to "XX"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'YY')).to.equal('' + (now.getUTCFullYear() - 2000)); }); it('"Y" equals to "1"', function () { var now = new Date(0, -1899 * 12, 1); expect(date.format(now, 'Y')).to.equal('1'); }); it('"Y" equals to "10"', function () { var now = new Date(0, -1890 * 12, 1); expect(date.format(now, 'Y')).to.equal('10'); }); it('"Y" equals to "100"', function () { var now = new Date(100, 0, 1); expect(date.format(now, 'Y')).to.equal('100'); }); it('"Y" equals to "1000"', function () { var now = new Date(1000, 0, 1); expect(date.format(now, 'Y')).to.equal('1000'); }); it('"Y" equals to "10000"', function () { var now = new Date(10000, 0, 1); expect(date.format(now, 'Y')).to.equal('10000'); }); it('"Y" as UTC equals to "X"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'Y')).to.equal('' + (now.getUTCFullYear())); }); it('"MMMM" equals to "January"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'MMMM')).to.equal('January'); }); it('"MMMM" equals to "December"', function () { var now = new Date(2015, 11, 1); expect(date.format(now, 'MMMM')).to.equal('December'); }); it('"MMM" equals to "Jan"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'MMM')).to.equal('Jan'); }); it('"MMM" equals to "Dec"', function () { var now = new Date(2015, 11, 1); expect(date.format(now, 'MMM')).to.equal('Dec'); }); it('"MM" equals to "01"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'MM')).to.equal('01'); }); it('"MM" equals to "12"', function () { var now = new Date(2015, 11, 1, 12, 34, 56, 789); expect(date.format(now, 'MM')).to.equal('12'); }); it('"MM" as UTC equals to "XX"', function () { var now = new Date(2015, 10, 1, 12, 34, 56, 789), utc = true; expect(date.format(now, 'MM', utc)).to.equal('' + (now.getUTCMonth() + 1)); }); it('"M" equals to "1"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'M')).to.equal('1'); }); it('"M" equals to "12"', function () { var now = new Date(2015, 11, 1, 12, 34, 56, 789); expect(date.format(now, 'M')).to.equal('12'); }); it('"M" as UTC equals to "XX"', function () { var now = new Date(2015, 10, 1, 12, 34, 56, 789); expect(date.format(now, 'M')).to.equal('' + (now.getUTCMonth() + 1)); }); it('"DD" equals to "01"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'DD')).to.equal('01'); }); it('"DD" equals to "31"', function () { var now = new Date(2015, 0, 31, 12, 34, 56, 789); expect(date.format(now, 'DD')).to.equal('31'); }); it('"DD" equals to "XX"', function () { var now = new Date(2015, 0, 15, 12, 34, 56, 789), utc = true; expect(date.format(now, 'DD', utc)).to.equal('' + now.getUTCDate()); }); it('"D" equals to "1"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'D')).to.equal('1'); }); it('"D" equals to "31"', function () { var now = new Date(2015, 0, 31, 12, 34, 56, 789); expect(date.format(now, 'D')).to.equal('31'); }); it('"D" as UTC equals to "XX"', function () { var now = new Date(2015, 0, 15, 12, 34, 56, 789), utc = true; expect(date.format(now, 'D', utc)).to.equal('' + now.getUTCDate()); }); it('"dddd" equals to "Tuesday"', function () { var now = new Date(2015, 0, 6, 12, 34, 56, 789); expect(date.format(now, 'dddd')).to.equal('Tuesday'); }); it('"dddd" equals to "Thursday"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'dddd')).to.equal('Thursday'); }); it('"ddd" equals to "Sun"', function () { var now = new Date(2015, 0, 4, 12, 34, 56, 789); expect(date.format(now, 'ddd')).to.equal('Sun'); }); it('"ddd" equals to "Wed"', function () { var now = new Date(2015, 0, 7, 12, 34, 56, 789); expect(date.format(now, 'ddd')).to.equal('Wed'); }); it('"dd" equals to "Fr"', function () { var now = new Date(2015, 0, 2, 12, 34, 56, 789); expect(date.format(now, 'dd')).to.equal('Fr'); }); it('"dd" equals to "Sa"', function () { var now = new Date(2015, 0, 3, 12, 34, 56, 789); expect(date.format(now, 'dd')).to.equal('Sa'); }); it('"HH" equals to "12"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'HH')).to.equal('12'); }); it('"HH" equals to "00"', function () { var now = new Date(2015, 0, 1, 0, 34, 56, 789); expect(date.format(now, 'HH')).to.equal('00'); }); it('"HH" equals to "23"', function () { var now = new Date(2015, 0, 1, 23, 34, 56, 789); expect(date.format(now, 'HH')).to.equal('23'); }); it('"HH" as UTC equals to "XX"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789), utc = true; expect(date.format(now, 'HH', utc)).to.equal(('0' + now.getUTCHours()).slice(-2)); }); it('"H" equals to "12"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'H')).to.equal('12'); }); it('"H" equals to "0"', function () { var now = new Date(2015, 0, 1, 0, 34, 56, 789); expect(date.format(now, 'H')).to.equal('0'); }); it('"H" equals to "23"', function () { var now = new Date(2015, 0, 1, 23, 34, 56, 789); expect(date.format(now, 'H')).to.equal('23'); }); it('"H" as UTC equals to "XX"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789), utc = true; expect(date.format(now, 'H', utc)).to.equal('' + now.getUTCHours()); }); it('"hh A" equals to "12 PM"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'hh A')).to.equal('12 PM'); }); it('"hh A" equals to "12 AM"', function () { var now = new Date(2015, 0, 1, 0, 34, 56, 789); expect(date.format(now, 'hh A')).to.equal('12 AM'); }); it('"hh A" equals to "11 PM"', function () { var now = new Date(2015, 0, 1, 23, 34, 56, 789); expect(date.format(now, 'hh A')).to.equal('11 PM'); }); it('"hh A" equals to "01 AM"', function () { var now = new Date(2015, 0, 1, 1, 34, 56, 789); expect(date.format(now, 'hh A')).to.equal('01 AM'); }); it('"hh A" equals to "01 PM"', function () { var now = new Date(2015, 0, 1, 13, 34, 56, 789); expect(date.format(now, 'hh A')).to.equal('01 PM'); }); it('"h A" equals to "12 PM"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'h A')).to.equal('12 PM'); }); it('"h A" equals to "12 AM"', function () { var now = new Date(2015, 0, 1, 0, 34, 56, 789); expect(date.format(now, 'h A')).to.equal('12 AM'); }); it('"h A" equals to "11 PM"', function () { var now = new Date(2015, 0, 1, 23, 34, 56, 789); expect(date.format(now, 'h A')).to.equal('11 PM'); }); it('"h A" equals to "1 AM"', function () { var now = new Date(2015, 0, 1, 1, 34, 56, 789); expect(date.format(now, 'h A')).to.equal('1 AM'); }); it('"h A" equals to "1 PM"', function () { var now = new Date(2015, 0, 1, 13, 34, 56, 789); expect(date.format(now, 'h A')).to.equal('1 PM'); }); it('"mm" equals to "34"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'mm')).to.equal('34'); }); it('"mm" equals to "00"', function () { var now = new Date(2015, 0, 1, 12, 0, 56, 789); expect(date.format(now, 'mm')).to.equal('00'); }); it('"mm" equals to "59"', function () { var now = new Date(2015, 0, 1, 12, 59, 56, 789); expect(date.format(now, 'mm')).to.equal('59'); }); it('"mm" as UTC equals to "XX"', function () { var now = new Date(2015, 0, 1, 12, 59, 56, 789), utc = true; expect(date.format(now, 'mm', utc)).to.equal(('0' + now.getUTCMinutes()).slice(-2)); }); it('"m" equals to "34"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'm')).to.equal('34'); }); it('"m" equals to "0"', function () { var now = new Date(2015, 0, 1, 12, 0, 56, 789); expect(date.format(now, 'm')).to.equal('0'); }); it('"m" equals to "59"', function () { var now = new Date(2015, 0, 1, 12, 59, 56, 789); expect(date.format(now, 'm')).to.equal('59'); }); it('"m" as UTC equals to "XX"', function () { var now = new Date(2015, 0, 1, 12, 59, 56, 789), utc = true; expect(date.format(now, 'm', utc)).to.equal('' + now.getUTCMinutes()); }); it('"ss" equals to "56"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'ss')).to.equal('56'); }); it('"ss" equals to "00"', function () { var now = new Date(2015, 0, 1, 12, 34, 0, 789); expect(date.format(now, 'ss')).to.equal('00'); }); it('"ss" equals to "59"', function () { var now = new Date(2015, 0, 1, 12, 34, 59, 789); expect(date.format(now, 'ss')).to.equal('59'); }); it('"ss" as UTC equals to "59"', function () { var now = new Date(2015, 0, 1, 12, 34, 59, 789), utc = true; expect(date.format(now, 'ss', utc)).to.equal(('0' + now.getUTCSeconds()).slice(-2)); }); it('"s" equals to "56"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 's')).to.equal('56'); }); it('"s" equals to "0"', function () { var now = new Date(2015, 0, 1, 12, 34, 0, 789); expect(date.format(now, 's')).to.equal('0'); }); it('"s" equals to "59"', function () { var now = new Date(2015, 0, 1, 12, 34, 59, 789); expect(date.format(now, 's')).to.equal('59'); }); it('"s" as UTC equals to "59"', function () { var now = new Date(2015, 0, 1, 12, 34, 59, 789), utc = true; expect(date.format(now, 's', utc)).to.equal('' + now.getUTCSeconds()); }); it('"SSS" equals to "789"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'SSS')).to.equal('789'); }); it('"SSS" equals to "000"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 0); expect(date.format(now, 'SSS')).to.equal('000'); }); it('"SSS" equals to "001"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 1); expect(date.format(now, 'SSS')).to.equal('001'); }); it('"SSS" as UTC equals to "XXX"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 10), utc = true; expect(date.format(now, 'SSS', utc)).to.equal(('00' + now.getUTCMilliseconds()).slice(-3)); }); it('"SS" equals to "78"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'SS')).to.equal('78'); }); it('"SS" equals to "00"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 0); expect(date.format(now, 'SS')).to.equal('00'); }); it('"SS" equals to "00"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 1); expect(date.format(now, 'SS')).to.equal('00'); }); it('"SS" as UTC equals to "XX"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 9), utc = true; expect(date.format(now, 'SS', utc)).to.equal(('00' + now.getUTCMilliseconds()).slice(-3).slice(0, 2)); }); it('"S" equals to "7"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'S')).to.equal('7'); }); it('"S" equals to "0"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 0); expect(date.format(now, 'S')).to.equal('0'); }); it('"S" equals to "0"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 1); expect(date.format(now, 'S')).to.equal('0'); }); it('"S" equals to "X"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789), utc = true; expect(date.format(now, 'S', utc)).to.equal(('00' + now.getUTCMilliseconds()).slice(-3).slice(0, 1)); }); it('"Z" matches "+XXXX/-XXXX"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'Z')).to.match(/^[+-]\d{4}$/); }); it('"Z" as UTC equals to "+0000"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789), utc = true; expect(date.format(now, 'Z', utc)).to.equal('+0000'); }); it('"ZZ" matches "+XX:XX/-XX:XX"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'ZZ')).to.match(/^[+-]\d{2}:\d{2}$/); }); it('"ZZ" as UTC equals to "+00:00"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789), utc = true; expect(date.format(now, 'ZZ', utc)).to.equal('+00:00'); }); it('"ddd MMM DD YYYY HH:mm:ss" equals to "Thu Jan 01 2015 12:34:56"', function () { var now = new Date(2015, 0, 1, 12, 34, 56, 789); expect(date.format(now, 'ddd MMM DD YYYY HH:mm:ss')).to.equal('Thu Jan 01 2015 12:34:56'); }); it('"YYYY/MM/DD HH:mm:ss.SSS" equals to "1900/01/01 00:00:00.000"', function () { var now = new Date(0, 0, 1); expect(date.format(now, 'YYYY/MM/DD HH:mm:ss.SSS')).to.equal('1900/01/01 00:00:00.000'); }); it('"YY/MM/DD HH:mm:ss.SSS" equals to "00/01/01 00:00:00.000"', function () { var now = new Date(0, 0, 1); expect(date.format(now, 'YY/MM/DD HH:mm:ss.SSS')).to.equal('00/01/01 00:00:00.000'); }); it('"Y/M/D H:m:s.SSS" equals to "999/1/1 0:0:0.000"', function () { var now = new Date(999, 0, 1); expect(date.format(now, 'Y/M/D H:m:s.SSS')).to.equal('999/1/1 0:0:0.000'); }); it('"dddd, MMMM D, YYYY h A" equals to "Saturday, January 1, 2000 10 AM"', function () { var now = new Date(2000, 0, 1, 10, 0, 0); expect(date.format(now, 'dddd, MMMM D, YYYY h A')).to.equal('Saturday, January 1, 2000 10 AM'); }); it('"[dddd, MMMM D, YYYY h A]" equals to "dddd, MMMM D, YYYY h A"', function () { var now = new Date(2000, 0, 1, 10, 0, 0); expect(date.format(now, '[dddd, MMMM D, YYYY h A]')).to.equal('dddd, MMMM D, YYYY h A'); }); it('"[dddd], MMMM [D], YYYY [h] A" equals to "dddd, January D, 2000 h AM"', function () { var now = new Date(2000, 0, 1, 10, 0, 0); expect(date.format(now, '[dddd], MMMM [D], YYYY [h] A')).to.equal('dddd, January D, 2000 h AM'); }); it('"[[dddd], MMMM [D], YYYY [h] A]" equals to "[dddd], MMMM [D], YYYY [h] A"', function () { var now = new Date(2000, 0, 1, 10, 0, 0); expect(date.format(now, '[[dddd], MMMM [D], YYYY [h] A]')).to.equal('[dddd], MMMM [D], YYYY [h] A'); }); it('"[dddd], MMMM [[D], YYYY] [h] A" equals to "dddd, January [D], YYYY h AM"', function () { var now = new Date(2000, 0, 1, 10, 0, 0); expect(date.format(now, '[dddd], MMMM [[D], YYYY] [h] A')).to.equal('dddd, January [D], YYYY h AM'); }); }); describe('compile', function () { it('YYYY', function () { var obj = ['YYYY', 'YYYY']; expect(date.compile('YYYY')).to.eql(obj); }); it('Y', function () { var obj = ['Y', 'Y']; expect(date.compile('Y')).to.eql(obj); }); it('YYYY MMMM', function () { var obj = ['YYYY MMMM', 'YYYY', ' ', 'MMMM']; expect(date.compile('YYYY MMMM')).to.eql(obj); }); it('YYYY MMM', function () { var obj = ['YYYY MMM', 'YYYY', ' ', 'MMM']; expect(date.compile('YYYY MMM')).to.eql(obj); }); it('YYYY-MM', function () { var obj = ['YYYY-MM', 'YYYY', '-', 'MM']; expect(date.compile('YYYY-MM')).to.eql(obj); }); it('YYYY-M', function () { var obj = ['YYYY-M', 'YYYY', '-', 'M']; expect(date.compile('YYYY-M')).to.eql(obj); }); it('YYYY-MM-DD', function () { var obj = ['YYYY-MM-DD', 'YYYY', '-', 'MM', '-', 'DD']; expect(date.compile('YYYY-MM-DD')).to.eql(obj); }); it('YYYY-M-D', function () { var obj = ['YYYY-M-D', 'YYYY', '-', 'M', '-', 'D']; expect(date.compile('YYYY-M-D')).to.eql(obj); }); it('YYYY-MM-DD HH', function () { var obj = ['YYYY-MM-DD HH', 'YYYY', '-', 'MM', '-', 'DD', ' ', 'HH']; expect(date.compile('YYYY-MM-DD HH')).to.eql(obj); }); it('YYYY-M-D H', function () { var obj = ['YYYY-M-D H', 'YYYY', '-', 'M', '-', 'D', ' ', 'H']; expect(date.compile('YYYY-M-D H')).to.eql(obj); }); it('YYYY-M-D hh A', function () { var obj = ['YYYY-M-D hh A', 'YYYY', '-', 'M', '-', 'D', ' ', 'hh', ' ', 'A']; expect(date.compile('YYYY-M-D hh A')).to.eql(obj); }); it('YYYY-M-D h A', function () { var obj = ['YYYY-M-D h A', 'YYYY', '-', 'M', '-', 'D', ' ', 'h', ' ', 'A']; expect(date.compile('YYYY-M-D h A')).to.eql(obj); }); it('YYYY-MM-DD HH:mm', function () { var obj = ['YYYY-MM-DD HH:mm', 'YYYY', '-', 'MM', '-', 'DD', ' ', 'HH', ':', 'mm']; expect(date.compile('YYYY-MM-DD HH:mm')).to.eql(obj); }); it('YYYY-M-D H:m', function () { var obj = ['YYYY-M-D H:m', 'YYYY', '-', 'M', '-', 'D', ' ', 'H', ':', 'm']; expect(date.compile('YYYY-M-D H:m')).to.eql(obj); }); it('YYYY-MM-DD HH:mm:ss', function () { var obj = ['YYYY-MM-DD HH:mm:ss', 'YYYY', '-', 'MM', '-', 'DD', ' ', 'HH', ':', 'mm', ':', 'ss']; expect(date.compile('YYYY-MM-DD HH:mm:ss')).to.eql(obj); }); it('YYYY-M-D H:m:s', function () { var obj = ['YYYY-M-D H:m:s', 'YYYY', '-', 'M', '-', 'D', ' ', 'H', ':', 'm', ':', 's']; expect(date.compile('YYYY-M-D H:m:s')).to.eql(obj); }); it('YYYY-M-D H:m:s.SSS', function () { var obj = ['YYYY-M-D H:m:s.SSS', 'YYYY', '-', 'M', '-', 'D', ' ', 'H', ':', 'm', ':', 's', '.', 'SSS']; expect(date.compile('YYYY-M-D H:m:s.SSS')).to.eql(obj); }); it('YYYY-M-D H:m:s.SS', function () { var obj = ['YYYY-M-D H:m:s.SS', 'YYYY', '-', 'M', '-', 'D', ' ', 'H', ':', 'm', ':', 's', '.', 'SS']; expect(date.compile('YYYY-M-D H:m:s.SS')).to.eql(obj); }); it('YYYY-M-D H:m:s.S', function () { var obj = ['YYYY-M-D H:m:s.S', 'YYYY', '-', 'M', '-', 'D', ' ', 'H', ':', 'm', ':', 's', '.', 'S']; expect(date.compile('YYYY-M-D H:m:s.S')).to.eql(obj); }); it('MMDDHHmmssSSS', function () { var obj = ['MMDDHHmmssSSS', 'MM', 'DD', 'HH', 'mm', 'ss', 'SSS']; expect(date.compile('MMDDHHmmssSSS')).to.eql(obj); }); it('DDHHmmssSSS', function () { var obj = ['DDHHmmssSSS', 'DD', 'HH', 'mm', 'ss', 'SSS']; expect(date.compile('DDHHmmssSSS')).to.eql(obj); }); it('HHmmssSSS', function () { var obj = ['HHmmssSSS', 'HH', 'mm', 'ss', 'SSS']; expect(date.compile('HHmmssSSS')).to.eql(obj); }); it('mmssSSS', function () { var obj = ['mmssSSS', 'mm', 'ss', 'SSS']; expect(date.compile('mmssSSS')).to.eql(obj); }); it('ssSSS', function () { var obj = ['ssSSS', 'ss', 'SSS']; expect(date.compile('ssSSS')).to.eql(obj); }); it('SSS', function () { var obj = ['SSS', 'SSS']; expect(date.compile('SSS')).to.eql(obj); }); it('foo', function () { var obj = ['foo', 'f', 'oo']; expect(date.compile('foo')).to.eql(obj); }); it('bar', function () { var obj = ['bar', 'b', 'a', 'r']; expect(date.compile('bar')).to.eql(obj); }); it('YYYYMMDD', function () { var obj = ['YYYYMMDD', 'YYYY', 'MM', 'DD']; expect(date.compile('YYYYMMDD')).to.eql(obj); }); it('20150101235959', function () { var obj = ['20150101235959', '2', '0', '1', '5', '0', '1', '0', '1', '2', '3', '5', '9', '5', '9']; expect(date.compile('20150101235959')).to.eql(obj); }); it('YYYY?M?D H?m?s?S', function () { var obj = ['YYYY?M?D H?m?s?S', 'YYYY', '?', 'M', '?', 'D', ' ', 'H', '?', 'm', '?', 's', '?', 'S']; expect(date.compile('YYYY?M?D H?m?s?S')).to.eql(obj); }); it('[Y]YYYY[M]M[D]D[H]H[m]m[s]s[S]S', function () { var obj = ['[Y]YYYY[M]M[D]D[H]H[m]m[s]s[S]S', '[Y]', 'YYYY', '[M]', 'M', '[D]', 'D', '[H]', 'H', '[m]', 'm', '[s]', 's', '[S]', 'S']; expect(date.compile('[Y]YYYY[M]M[D]D[H]H[m]m[s]s[S]S')).to.eql(obj); }); it('[[Y]YYYY[M]MM[D]DD[H]HH[m]mm[s]ss[S]S]', function () { var obj = ['[[Y]YYYY[M]MM[D]DD[H]HH[m]mm[s]ss[S]S]', '[[Y]YYYY[M]MM[D]DD[H]HH[m]mm[s]ss[S]S]']; expect(date.compile('[[Y]YYYY[M]MM[D]DD[H]HH[m]mm[s]ss[S]S]')).to.eql(obj); }); it(' ', function () { var obj = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']; expect(date.compile(' ')).to.eql(obj); }); }); describe('preparse', function () { it('YYYY', function () { var dt = { Y: 0, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 4, _length: 4, _match: 1 }; expect(date.preparse('0000', 'YYYY')).to.eql(dt); }); it('YYYY', function () { var dt = { Y: 1, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 4, _length: 4, _match: 1 }; expect(date.preparse('0001', 'YYYY')).to.eql(dt); }); it('YYYY', function () { var dt = { Y: 99, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 4, _length: 4, _match: 1 }; expect(date.preparse('0099', 'YYYY')).to.eql(dt); }); it('YYYY', function () { var dt = { Y: 100, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 4, _length: 4, _match: 1 }; expect(date.preparse('0100', 'YYYY')).to.eql(dt); }); it('YYYY', function () { var dt = { Y: 1899, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 4, _length: 4, _match: 1 }; expect(date.preparse('1899', 'YYYY')).to.eql(dt); }); it('YYYY', function () { var dt = { Y: 1900, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 4, _length: 4, _match: 1 }; expect(date.preparse('1900', 'YYYY')).to.eql(dt); }); it('YYYY', function () { var dt = { Y: 1969, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 4, _length: 4, _match: 1 }; expect(date.preparse('1969', 'YYYY')).to.eql(dt); }); it('YYYY', function () { var dt = { Y: 1970, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 4, _length: 4, _match: 1 }; expect(date.preparse('1970', 'YYYY')).to.eql(dt); }); it('YYYY', function () { var dt = { Y: 1999, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 4, _length: 4, _match: 1 }; expect(date.preparse('1999', 'YYYY')).to.eql(dt); }); it('YYYY', function () { var dt = { Y: 2000, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 4, _length: 4, _match: 1 }; expect(date.preparse('2000', 'YYYY')).to.eql(dt); }); it('YYYY', function () { var dt = { Y: 9999, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 4, _length: 4, _match: 1 }; expect(date.preparse('9999', 'YYYY')).to.eql(dt); }); it('Y', function () { var dt = { Y: 0, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 1, _length: 1, _match: 1 }; expect(date.preparse('0', 'Y')).to.eql(dt); }); it('Y', function () { var dt = { Y: 1, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 1, _length: 1, _match: 1 }; expect(date.preparse('1', 'Y')).to.eql(dt); }); it('Y', function () { var dt = { Y: 99, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 2, _length: 2, _match: 1 }; expect(date.preparse('99', 'Y')).to.eql(dt); }); it('Y', function () { var dt = { Y: 100, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 3, _length: 3, _match: 1 }; expect(date.preparse('100', 'Y')).to.eql(dt); }); it('YYYY MMMM', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 12, _length: 12, _match: 2 }; expect(date.preparse('2015 January', 'YYYY MMMM')).to.eql(dt); }); it('YYYY MMMM', function () { var dt = { Y: 2015, M: 12, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 13, _length: 13, _match: 2 }; expect(date.preparse('2015 December', 'YYYY MMMM')).to.eql(dt); }); it('YYYY MMMM', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 5, _length: 9, _match: 1 }; expect(date.preparse('2015 Zero', 'YYYY MMMM')).to.eql(dt); }); it('YYYY MMM', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 8, _length: 8, _match: 2 }; expect(date.preparse('2015 Jan', 'YYYY MMM')).to.eql(dt); }); it('YYYY MMM', function () { var dt = { Y: 2015, M: 12, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 8, _length: 8, _match: 2 }; expect(date.preparse('2015 Dec', 'YYYY MMM')).to.eql(dt); }); it('YYYY MMM', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 5, _length: 9, _match: 1 }; expect(date.preparse('2015 Zero', 'YYYY MMM')).to.eql(dt); }); it('YYYY-MM', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 7, _length: 7, _match: 2 }; expect(date.preparse('2015-01', 'YYYY-MM')).to.eql(dt); }); it('YYYY-MM', function () { var dt = { Y: 2015, M: 12, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 7, _length: 7, _match: 2 }; expect(date.preparse('2015-12', 'YYYY-MM')).to.eql(dt); }); it('YYYY-MM', function () { var dt = { Y: 2015, M: 0, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 7, _length: 7, _match: 2 }; expect(date.preparse('2015-00', 'YYYY-MM')).to.eql(dt); }); it('YYYY-M', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 6, _length: 6, _match: 2 }; expect(date.preparse('2015-1', 'YYYY-M')).to.eql(dt); }); it('YYYY-M', function () { var dt = { Y: 2015, M: 12, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 7, _length: 7, _match: 2 }; expect(date.preparse('2015-12', 'YYYY-M')).to.eql(dt); }); it('YYYY-M', function () { var dt = { Y: 2015, M: 0, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 6, _length: 6, _match: 2 }; expect(date.preparse('2015-0', 'YYYY-M')).to.eql(dt); }); it('YYYY-MM-DD', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 10, _length: 10, _match: 3 }; expect(date.preparse('2015-01-01', 'YYYY-MM-DD')).to.eql(dt); }); it('YYYY-MM-DD', function () { var dt = { Y: 2015, M: 12, D: 31, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 10, _length: 10, _match: 3 }; expect(date.preparse('2015-12-31', 'YYYY-MM-DD')).to.eql(dt); }); it('YYYY-MM-DD', function () { var dt = { Y: 2015, M: 0, D: 0, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 10, _length: 10, _match: 3 }; expect(date.preparse('2015-00-00', 'YYYY-MM-DD')).to.eql(dt); }); it('YYYY-M-D', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 8, _length: 8, _match: 3 }; expect(date.preparse('2015-1-1', 'YYYY-M-D')).to.eql(dt); }); it('YYYY-M-D', function () { var dt = { Y: 2015, M: 12, D: 31, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 10, _length: 10, _match: 3 }; expect(date.preparse('2015-12-31', 'YYYY-M-D')).to.eql(dt); }); it('YYYY-M-D', function () { var dt = { Y: 2015, M: 0, D: 0, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 8, _length: 8, _match: 3 }; expect(date.preparse('2015-0-0', 'YYYY-M-D')).to.eql(dt); }); it('YYYY-MM-DD HH', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 13, _length: 13, _match: 4 }; expect(date.preparse('2015-01-01 00', 'YYYY-MM-DD HH')).to.eql(dt); }); it('YYYY-MM-DD HH', function () { var dt = { Y: 2015, M: 12, D: 31, H: 23, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 13, _length: 13, _match: 4 }; expect(date.preparse('2015-12-31 23', 'YYYY-MM-DD HH')).to.eql(dt); }); it('YYYY-MM-DD HH', function () { var dt = { Y: 2015, M: 0, D: 0, H: 24, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 13, _length: 13, _match: 4 }; expect(date.preparse('2015-00-00 24', 'YYYY-MM-DD HH')).to.eql(dt); }); it('YYYY-M-D H', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 10, _length: 10, _match: 4 }; expect(date.preparse('2015-1-1 0', 'YYYY-M-D H')).to.eql(dt); }); it('YYYY-M-D H', function () { var dt = { Y: 2015, M: 12, D: 31, H: 23, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 13, _length: 13, _match: 4 }; expect(date.preparse('2015-12-31 23', 'YYYY-M-D H')).to.eql(dt); }); it('YYYY-M-D H', function () { var dt = { Y: 2015, M: 0, D: 0, H: 24, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 11, _length: 11, _match: 4 }; expect(date.preparse('2015-0-0 24', 'YYYY-M-D H')).to.eql(dt); }); it('YYYY-M-D hh A', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 12, m: 0, s: 0, S: 0, Z: 0, _index: 14, _length: 14, _match: 5 }; expect(date.preparse('2015-1-1 12 AM', 'YYYY-M-D hh A')).to.eql(dt); }); it('YYYY-M-D hh A', function () { var dt = { Y: 2015, M: 12, D: 31, H: 23, A: 1, h: 11, m: 0, s: 0, S: 0, Z: 0, _index: 16, _length: 16, _match: 5 }; expect(date.preparse('2015-12-31 11 PM', 'YYYY-M-D hh A')).to.eql(dt); }); it('YYYY-M-D hh A', function () { var dt = { Y: 2015, M: 0, D: 0, H: 0, A: 0, h: 12, m: 0, s: 0, S: 0, Z: 0, _index: 14, _length: 14, _match: 5 }; expect(date.preparse('2015-0-0 12 AM', 'YYYY-M-D hh A')).to.eql(dt); }); it('YYYY-M-D h A', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 12, m: 0, s: 0, S: 0, Z: 0, _index: 14, _length: 14, _match: 5 }; expect(date.preparse('2015-1-1 12 AM', 'YYYY-M-D h A')).to.eql(dt); }); it('YYYY-M-D h A', function () { var dt = { Y: 2015, M: 12, D: 31, H: 23, A: 1, h: 11, m: 0, s: 0, S: 0, Z: 0, _index: 16, _length: 16, _match: 5 }; expect(date.preparse('2015-12-31 11 PM', 'YYYY-M-D h A')).to.eql(dt); }); it('YYYY-M-D h A', function () { var dt = { Y: 2015, M: 0, D: 0, H: 0, A: 0, h: 12, m: 0, s: 0, S: 0, Z: 0, _index: 14, _length: 14, _match: 5 }; expect(date.preparse('2015-0-0 12 AM', 'YYYY-M-D h A')).to.eql(dt); }); it('YYYY-MM-DD HH:mm', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 16, _length: 16, _match: 5 }; expect(date.preparse('2015-01-01 00:00', 'YYYY-MM-DD HH:mm')).to.eql(dt); }); it('YYYY-MM-DD HH:mm', function () { var dt = { Y: 2015, M: 12, D: 31, H: 23, A: 0, h: 0, m: 59, s: 0, S: 0, Z: 0, _index: 16, _length: 16, _match: 5 }; expect(date.preparse('2015-12-31 23:59', 'YYYY-MM-DD HH:mm')).to.eql(dt); }); it('YYYY-MM-DD HH:mm', function () { var dt = { Y: 2015, M: 0, D: 0, H: 24, A: 0, h: 0, m: 60, s: 0, S: 0, Z: 0, _index: 16, _length: 16, _match: 5 }; expect(date.preparse('2015-00-00 24:60', 'YYYY-MM-DD HH:mm')).to.eql(dt); }); it('YYYY-M-D H:m', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 12, _length: 12, _match: 5 }; expect(date.preparse('2015-1-1 0:0', 'YYYY-M-D H:m')).to.eql(dt); }); it('YYYY-M-D H:m', function () { var dt = { Y: 2015, M: 12, D: 31, H: 23, A: 0, h: 0, m: 59, s: 0, S: 0, Z: 0, _index: 16, _length: 16, _match: 5 }; expect(date.preparse('2015-12-31 23:59', 'YYYY-M-D H:m')).to.eql(dt); }); it('YYYY-M-D H:m', function () { var dt = { Y: 2015, M: 0, D: 0, H: 24, A: 0, h: 0, m: 60, s: 0, S: 0, Z: 0, _index: 14, _length: 14, _match: 5 }; expect(date.preparse('2015-0-0 24:60', 'YYYY-M-D H:m')).to.eql(dt); }); it('YYYY-MM-DD HH:mm:ss', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 19, _length: 19, _match: 6 }; expect(date.preparse('2015-01-01 00:00:00', 'YYYY-MM-DD HH:mm:ss')).to.eql(dt); }); it('YYYY-MM-DD HH:mm:ss', function () { var dt = { Y: 2015, M: 12, D: 31, H: 23, A: 0, h: 0, m: 59, s: 59, S: 0, Z: 0, _index: 19, _length: 19, _match: 6 }; expect(date.preparse('2015-12-31 23:59:59', 'YYYY-MM-DD HH:mm:ss')).to.eql(dt); }); it('YYYY-MM-DD HH:mm:ss', function () { var dt = { Y: 2015, M: 0, D: 0, H: 24, A: 0, h: 0, m: 60, s: 60, S: 0, Z: 0, _index: 19, _length: 19, _match: 6 }; expect(date.preparse('2015-00-00 24:60:60', 'YYYY-MM-DD HH:mm:ss')).to.eql(dt); }); it('YYYY-M-D H:m:s', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 14, _length: 14, _match: 6 }; expect(date.preparse('2015-1-1 0:0:0', 'YYYY-M-D H:m:s')).to.eql(dt); }); it('YYYY-M-D H:m:s', function () { var dt = { Y: 2015, M: 12, D: 31, H: 23, A: 0, h: 0, m: 59, s: 59, S: 0, Z: 0, _index: 19, _length: 19, _match: 6 }; expect(date.preparse('2015-12-31 23:59:59', 'YYYY-M-D H:m:s')).to.eql(dt); }); it('YYYY-M-D H:m:s', function () { var dt = { Y: 2015, M: 0, D: 0, H: 24, A: 0, h: 0, m: 60, s: 60, S: 0, Z: 0, _index: 17, _length: 17, _match: 6 }; expect(date.preparse('2015-0-0 24:60:60', 'YYYY-M-D H:m:s')).to.eql(dt); }); it('YYYY-M-D H:m:s.SSS', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 16, _length: 16, _match: 7 }; expect(date.preparse('2015-1-1 0:0:0.0', 'YYYY-M-D H:m:s.SSS')).to.eql(dt); }); it('YYYY-M-D H:m:s.SSS', function () { var dt = { Y: 2015, M: 12, D: 31, H: 23, A: 0, h: 0, m: 59, s: 59, S: 999, Z: 0, _index: 23, _length: 23, _match: 7 }; expect(date.preparse('2015-12-31 23:59:59.999', 'YYYY-M-D H:m:s.SSS')).to.eql(dt); }); it('YYYY-M-D H:m:s.SSS', function () { var dt = { Y: 2015, M: 0, D: 0, H: 24, A: 0, h: 0, m: 60, s: 61, S: 0, Z: 0, _index: 21, _length: 21, _match: 7 }; expect(date.preparse('2015-0-0 24:60:61.000', 'YYYY-M-D H:m:s.SSS')).to.eql(dt); }); it('YYYY-M-D H:m:s.SS', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 16, _length: 16, _match: 7 }; expect(date.preparse('2015-1-1 0:0:0.0', 'YYYY-M-D H:m:s.SS')).to.eql(dt); }); it('YYYY-M-D H:m:s.SS', function () { var dt = { Y: 2015, M: 12, D: 31, H: 23, A: 0, h: 0, m: 59, s: 59, S: 990, Z: 0, _index: 22, _length: 22, _match: 7 }; expect(date.preparse('2015-12-31 23:59:59.99', 'YYYY-M-D H:m:s.SS')).to.eql(dt); }); it('YYYY-M-D H:m:s.SS', function () { var dt = { Y: 2015, M: 0, D: 0, H: 24, A: 0, h: 0, m: 60, s: 61, S: 0, Z: 0, _index: 20, _length: 20, _match: 7 }; expect(date.preparse('2015-0-0 24:60:61.00', 'YYYY-M-D H:m:s.SS')).to.eql(dt); }); it('YYYY-M-D H:m:s.S', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 16, _length: 16, _match: 7 }; expect(date.preparse('2015-1-1 0:0:0.0', 'YYYY-M-D H:m:s.S')).to.eql(dt); }); it('YYYY-M-D H:m:s.S', function () { var dt = { Y: 2015, M: 12, D: 31, H: 23, A: 0, h: 0, m: 59, s: 59, S: 900, Z: 0, _index: 21, _length: 21, _match: 7 }; expect(date.preparse('2015-12-31 23:59:59.9', 'YYYY-M-D H:m:s.S')).to.eql(dt); }); it('YYYY M D H m s S', function () { var dt = { Y: 2015, M: 12, D: 31, H: 23, A: 0, h: 0, m: 59, s: 59, S: 900, Z: 0, _index: 21, _length: 21, _match: 7 }; expect(date.preparse('2015-12-31 23:59:59.9', 'YYYY M D H m s S')).to.eql(dt); }); it('YYYY-M-D H:m:s.S', function () { var dt = { Y: 2015, M: 0, D: 0, H: 24, A: 0, h: 0, m: 60, s: 61, S: 0, Z: 0, _index: 19, _length: 19, _match: 7 }; expect(date.preparse('2015-0-0 24:60:61.0', 'YYYY-M-D H:m:s.S')).to.eql(dt); }); it('YYYY-M-D H:m:s.SSS Z', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 22, _length: 22, _match: 8 }; expect(date.preparse('2015-1-1 0:0:0.0 +0000', 'YYYY-M-D H:m:s.SSS Z')).to.eql(dt); }); it('YYYY-M-D H:m:s.SSS Z', function () { var dt = { Y: 2015, M: 12, D: 31, H: 23, A: 0, h: 0, m: 59, s: 59, S: 999, Z: 840, _index: 29, _length: 29, _match: 8 }; expect(date.preparse('2015-12-31 23:59:59.999 -1400', 'YYYY-M-D H:m:s.SSS Z')).to.eql(dt); }); it('YYYY-M-D H:m:s.SSS Z', function () { var dt = { Y: 2015, M: 0, D: 0, H: 24, A: 0, h: 0, m: 60, s: 61, S: 0, Z: -720, _index: 27, _length: 27, _match: 8 }; expect(date.preparse('2015-0-0 24:60:61.000 +1200', 'YYYY-M-D H:m:s.SSS Z')).to.eql(dt); }); it('MMDDHHmmssSSS', function () { var dt = { Y: 1970, M: 12, D: 31, H: 23, A: 0, h: 0, m: 59, s: 59, S: 999, Z: 0, _index: 13, _length: 13, _match: 6 }; expect(date.preparse('1231235959999', 'MMDDHHmmssSSS')).to.eql(dt); }); it('DDHHmmssSSS', function () { var dt = { Y: 1970, M: 1, D: 31, H: 23, A: 0, h: 0, m: 59, s: 59, S: 999, Z: 0, _index: 11, _length: 11, _match: 5 }; expect(date.preparse('31235959999', 'DDHHmmssSSS')).to.eql(dt); }); it('HHmmssSSS', function () { var dt = { Y: 1970, M: 1, D: 1, H: 23, A: 0, h: 0, m: 59, s: 59, S: 999, Z: 0, _index: 9, _length: 9, _match: 4 }; expect(date.preparse('235959999', 'HHmmssSSS')).to.eql(dt); }); it('mmssSSS', function () { var dt = { Y: 1970, M: 1, D: 1, H: 0, A: 0, h: 0, m: 59, s: 59, S: 999, Z: 0, _index: 7, _length: 7, _match: 3 }; expect(date.preparse('5959999', 'mmssSSS')).to.eql(dt); }); it('ssSSS', function () { var dt = { Y: 1970, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 59, S: 999, Z: 0, _index: 5, _length: 5, _match: 2 }; expect(date.preparse('59999', 'ssSSS')).to.eql(dt); }); it('SSS', function () { var dt = { Y: 1970, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 999, Z: 0, _index: 3, _length: 3, _match: 1 }; expect(date.preparse('999', 'SSS')).to.eql(dt); }); it('Z', function () { var dt = { Y: 1970, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: -355, _index: 5, _length: 5, _match: 1 }; expect(date.preparse('+0555', 'Z')).to.eql(dt); }); it('Z', function () { var dt = { Y: 1970, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 0, _length: 5, _match: 0 }; expect(date.preparse('+9999', 'Z')).to.eql(dt); }); it('ZZ', function () { var dt = { Y: 1970, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: -355, _index: 6, _length: 6, _match: 1 }; expect(date.preparse('+05:55', 'ZZ')).to.eql(dt); }); it('ZZ', function () { var dt = { Y: 1970, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 0, _length: 6, _match: 0 }; expect(date.preparse('+99:99', 'Z')).to.eql(dt); }); it('foo', function () { var dt = { Y: 1970, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 0, _length: 14, _match: 0 }; expect(date.preparse('20150101235959', 'foo')).to.eql(dt); }); it('bar', function () { var dt = { Y: 1970, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 0, _length: 14, _match: 0 }; expect(date.preparse('20150101235959', 'bar')).to.eql(dt); }); it('YYYYMMDD', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 8, _length: 14, _match: 3 }; expect(date.preparse('20150101235959', 'YYYYMMDD')).to.eql(dt); }); it('20150101235959', function () { var dt = { Y: 1970, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 14, _length: 14, _match: 0 }; expect(date.preparse('20150101235959', '20150101235959')).to.eql(dt); }); it('YYYY?M?D H?m?s?S', function () { var dt = { Y: 2015, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 4, _length: 21, _match: 1 }; expect(date.preparse('2015-12-31 23:59:59.9', 'YYYY?M?D H?m?s?S')).to.eql(dt); }); it('YYYY-MM-DD HH:mm:ssZ', function () { var dt = { Y: 2015, M: 12, D: 31, H: 23, A: 0, h: 0, m: 59, s: 59, S: 0, Z: 0, _index: 19, _length: 20, _match: 6 }; expect(date.preparse('2015-12-31 23:59:59K', 'YYYY-MM-DD HH:mm:ss[Z]')).to.eql(dt); }); it('[Y]YYYY[M]M[D]D[H]H[m]m[s]s[S]S', function () { var dt = { Y: 2015, M: 12, D: 31, H: 23, A: 0, h: 0, m: 59, s: 59, S: 900, Z: 0, _index: 22, _length: 22, _match: 7 }; expect(date.preparse('Y2015M12D31H23m59s59S9', '[Y]YYYY[M]M[D]D[H]H[m]m[s]s[S]S')).to.eql(dt); }); it('[Y]YYYY[M]M[D]D[H]H[m]m[s]s[S]S', function () { var dt = { Y: 2015, M: 12, D: 31, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 22, _length: 22, _match: 3 }; expect(date.preparse('Y2015M12D31H23m59s59S9', '[Y]YYYY[M]M[D]D...')).to.eql(dt); }); it('[[Y]YYYY[M]MM[D]DD[H]HH[m]mm[s]ss[S]S]', function () { var dt = { Y: 1970, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 36, _length: 36, _match: 0 }; expect(date.preparse('[Y]YYYY[M]MM[D]DD[H]HH[m]mm[s]ss[S]S', '[[Y]YYYY[M]MM[D]DD[H]HH[m]mm[s]ss[S]S]')).to.eql(dt); }); it('[[Y]YYYY[M]MM[D]DD[H]HH[m]mm[s]ss[S]S]', function () { var dt = { Y: 1970, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 0, _length: 36, _match: 0 }; expect(date.preparse('[Y]2015[M]12[D]31[H]23[m]59[s]59[S]9', '[[Y]YYYY[M]MM[D]DD[H]HH[m]mm[s]ss[S]S]')).to.eql(dt); }); it(' ', function () { var dt = { Y: 1970, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 17, _length: 17, _match: 0 }; expect(date.preparse('20151231235959900', ' ')).to.eql(dt); }); }); describe('parse', function () { it('YYYY', function () { expect(isNaN(date.parse('0000', 'YYYY'))).to.be(true); }); it('YYYY', function () { var now = new Date(0, -1899 * 12, 1); expect(date.parse('0001', 'YYYY')).to.eql(now); }); it('YYYY', function () { var now = new Date(0, -1801 * 12, 1); expect(date.parse('0099', 'YYYY')).to.eql(now); }); it('YYYY', function () { var now = new Date(100, 0, 1); expect(date.parse('0100', 'YYYY')).to.eql(now); }); it('YYYY', function () { var now = new Date(1899, 0, 1); expect(date.parse('1899', 'YYYY')).to.eql(now); }); it('YYYY', function () { var now = new Date(1900, 0, 1); expect(date.parse('1900', 'YYYY')).to.eql(now); }); it('YYYY', function () { var now = new Date(1969, 0, 1); expect(date.parse('1969', 'YYYY')).to.eql(now); }); it('YYYY', function () { var now = new Date(1970, 0, 1); expect(date.parse('1970', 'YYYY')).to.eql(now); }); it('YYYY', function () { var now = new Date(1999, 0, 1); expect(date.parse('1999', 'YYYY')).to.eql(now); }); it('YYYY', function () { var now = new Date(2000, 0, 1); expect(date.parse('2000', 'YYYY')).to.eql(now); }); it('YYYY', function () { var now = new Date(9999, 0, 1); expect(date.parse('9999', 'YYYY')).to.eql(now); }); it('Y', function () { expect(isNaN(date.parse('0', 'Y'))).to.be(true); }); it('Y', function () { var now = new Date(0, -1899 * 12, 1); expect(date.parse('1', 'Y')).to.eql(now); }); it('Y', function () { var now = new Date(0, -1801 * 12, 1); expect(date.parse('99', 'Y')).to