1 var assert = require('assert');
3 var _ = require('underscore');
5 var dateFormat = require('../lib/dateformat');
8 'default': 'Wed Nov 26 2014 13:19:44',
9 'shortDate': '11/26/14',
10 'mediumDate': 'Nov 26, 2014',
11 'longDate': 'November 26, 2014',
12 'fullDate': 'Wednesday, November 26, 2014',
13 'shortTime': '1:19 PM',
14 'mediumTime': '1:19:44 PM',
15 'longTime': '1:19:44 PM %TZ_PREFIX%%TZ_OFFSET%',
16 'isoDate': '2014-11-26',
17 'isoTime': '13:19:44',
18 'isoDateTime': '2014-11-26T13:19:44%TZ_OFFSET%',
20 'expiresHeaderFormat': 'Wed, 26 Nov 2014 13:19:44 %TZ_PREFIX%%TZ_OFFSET%'
23 function pad(num, size) {
25 while (s.length < size) {
31 function parseOffset(date) {
32 var offset = date.getTimezoneOffset();
33 var hours = Math.floor(-1 * offset / 60);
34 var minutes = (-1 * offset) - (hours * 60);
35 var sign = offset > 0 ? '-' : '+';
44 function timezoneOffset(date) {
45 var offset = parseOffset(date);
46 return offset.sign + pad(offset.hours, 2) + pad(offset.minutes, 2);
49 describe('dateformat([now], [mask])', function() {
50 _.each(dateFormat.masks, function(value, key) {
51 it('should format `' + key + '` mask', function(done) {
52 var now = new Date(2014, 10, 26, 13, 19, 44);
53 var tzOffset = timezoneOffset(now);
54 var expected = expects[key].replace(/%TZ_PREFIX%/, 'GMT')
55 .replace(/%TZ_OFFSET%/g, tzOffset)
56 .replace(/GMT\+0000/g, 'UTC');
57 if (key === 'isoUtcDateTime') {
58 var offset = parseOffset(now);
59 now.setHours(now.getHours() - offset.hours,
60 now.getMinutes() - offset.minutes);
61 var expected = now.toISOString().replace(/\.000/g, '');
63 var actual = dateFormat(now, key);
64 assert.strictEqual(actual, expected);
68 it('should use `default` mask, when `mask` is empty', function(done) {
69 var now = new Date(2014, 10, 26, 13, 19, 44);
70 var expected = expects['default'];
71 var actual = dateFormat(now);
73 assert.strictEqual(actual, expected);