12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- var assert = require('assert');
- var _ = require('underscore');
- var dateFormat = require('../lib/dateformat');
- var expects = {
- 'default': 'Wed Nov 26 2014 13:19:44',
- 'shortDate': '11/26/14',
- 'mediumDate': 'Nov 26, 2014',
- 'longDate': 'November 26, 2014',
- 'fullDate': 'Wednesday, November 26, 2014',
- 'shortTime': '1:19 PM',
- 'mediumTime': '1:19:44 PM',
- 'longTime': '1:19:44 PM %TZ_PREFIX%%TZ_OFFSET%',
- 'isoDate': '2014-11-26',
- 'isoTime': '13:19:44',
- 'isoDateTime': '2014-11-26T13:19:44%TZ_OFFSET%',
- 'isoUtcDateTime': '',
- 'expiresHeaderFormat': 'Wed, 26 Nov 2014 13:19:44 %TZ_PREFIX%%TZ_OFFSET%'
- };
- function pad(num, size) {
- var s = num + '';
- while (s.length < size) {
- s = '0' + s;
- }
- return s;
- }
- function parseOffset(date) {
- var offset = date.getTimezoneOffset();
- var hours = Math.floor(-1 * offset / 60);
- var minutes = (-1 * offset) - (hours * 60);
- var sign = offset > 0 ? '-' : '+';
- return {
- offset: offset,
- hours: hours,
- minutes: minutes,
- sign: sign,
- };
- }
- function timezoneOffset(date) {
- var offset = parseOffset(date);
- return offset.sign + pad(offset.hours, 2) + pad(offset.minutes, 2);
- }
- describe('dateformat([now], [mask])', function() {
- _.each(dateFormat.masks, function(value, key) {
- it('should format `' + key + '` mask', function(done) {
- var now = new Date(2014, 10, 26, 13, 19, 44);
- var tzOffset = timezoneOffset(now);
- var expected = expects[key].replace(/%TZ_PREFIX%/, 'GMT')
- .replace(/%TZ_OFFSET%/g, tzOffset)
- .replace(/GMT\+0000/g, 'UTC');
- if (key === 'isoUtcDateTime') {
- var offset = parseOffset(now);
- now.setHours(now.getHours() - offset.hours,
- now.getMinutes() - offset.minutes);
- var expected = now.toISOString().replace(/\.000/g, '');
- }
- var actual = dateFormat(now, key);
- assert.strictEqual(actual, expected);
- done();
- });
- });
- it('should use `default` mask, when `mask` is empty', function(done) {
- var now = new Date(2014, 10, 26, 13, 19, 44);
- var expected = expects['default'];
- var actual = dateFormat(now);
- assert.strictEqual(actual, expected);
- done();
- });
- });
|