Socket
Socket
Sign inDemoInstall

date-and-time

Package Overview
Dependencies
Maintainers
1
Versions
58
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

date-and-time - npm Package Compare versions

Comparing version 0.1.8 to 0.2.0

locale/ar.js

335

date-and-time.js
/**
* @preserve date-and-time.js (c) 2015 KNOWLEDGECODE | MIT
* @preserve date-and-time.js (c) KNOWLEDGECODE | MIT
*/
/*global define */
(function (global) {
'use strict';
var date = {
month: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
dayOfWeek: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
hour12: {
meridian: ['a.m.', 'p.m.'],
h: function (d) {
var h = d.getHours() || 12;
return h > 12 ? h - 12 : h;
var date = {},
lang = 'en',
locales = {
en: {
MMMM: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
MMM: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
dddd: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
ddd: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
dd: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
A: ['a.m.', 'p.m.'],
formats: {
YYYY: function (d) { return ('000' + d.getFullYear()).slice(-4); },
YY: function (d) { return this.formats.YYYY(d).slice(2); },
MMMM: function (d) { return this.MMMM[d.getMonth()]; },
MMM: function (d) { return this.MMM[d.getMonth()]; },
M: function (d) { return '' + (d.getMonth() + 1); },
MM: function (d) { return ('0' + this.formats.M(d)).slice(-2); },
D: function (d) { return '' + d.getDate(); },
DD: function (d) { return ('0' + this.formats.D(d)).slice(-2); },
H: function (d) { return '' + d.getHours(); },
HH: function (d) { return ('0' + this.formats.H(d)).slice(-2); },
h: function (d) {
var h = d.getHours() || 12;
return '' + (h > 12 ? h - 12 : h);
},
hh: function (d) { return ('0' + this.formats.h(d)).slice(-2); },
A: function (d) { return this.A[d.getHours() > 11 | 0]; },
m: function (d) { return '' + d.getMinutes(); },
mm: function (d) { return ('0' + this.formats.m(d)).slice(-2); },
s: function (d) { return '' + d.getSeconds(); },
ss: function (d) { return ('0' + this.formats.s(d)).slice(-2); },
SSS: function (d) { return ('00' + d.getMilliseconds()).slice(-3); },
SS: function (d) { return this.formats.SSS(d).slice(0, 2); },
S: function (d) { return this.formats.SSS(d).slice(0, 1); },
dddd: function (d) { return this.dddd[d.getDay()]; },
ddd: function (d) { return this.ddd[d.getDay()]; },
dd: function (d) { return this.dd[d.getDay()]; },
Z: function (d) {
var offset = d.utc ? 0 : d.getTimezoneOffset(), sign = '-';
if (offset <= 0) {
sign = '+';
offset = -offset;
}
return sign + ('000' + ((offset / 60 | 0) * 100 + offset % 60)).slice(-4);
}
},
A: function (d) {
return this.meridian[d.getHours() > 11 | 0];
parsers: {
h: function (h, a) { return (h === 12 ? 0 : h) + a * 12; }
}
}
},
formats = {
YYYY: function (d) {
return ('000' + d.getFullYear()).slice(-4);
},
YY: function (d) {
return formats.YYYY(d).slice(2);
},
MMM: function (d) {
return date.month[d.getMonth()];
},
M: function (d) {
return String(d.getMonth() + 1);
},
MM: function (d) {
return ('0' + formats.M(d)).slice(-2);
},
D: function (d) {
return String(d.getDate());
},
DD: function (d) {
return ('0' + formats.D(d)).slice(-2);
},
H: function (d) {
return String(d.getHours());
},
HH: function (d) {
return ('0' + formats.H(d)).slice(-2);
},
h: function (d) {
return date.hour12.h(d);
},
hh: function (d) {
return ('0' + formats.h(d)).slice(-2);
},
A: function (d) {
return date.hour12.A(d);
},
m: function (d) {
return String(d.getMinutes());
},
mm: function (d) {
return ('0' + formats.m(d)).slice(-2);
},
s: function (d) {
return String(d.getSeconds());
},
ss: function (d) {
return ('0' + formats.s(d)).slice(-2);
},
SSS: function (d) {
return ('00' + d.getMilliseconds()).slice(-3);
},
SS: function (d) {
return formats.SSS(d).slice(0, 2);
},
S: function (d) {
return formats.SSS(d).slice(0, 1);
},
E: function (d) {
return date.dayOfWeek[d.getDay()];
forEach = function (array, fn) {
for (var i = 0, len = array.length; i < len; i++) {
if (fn(array[i], i) === 0) {
break;
}
}
},
parse = function (dateString, formatString) {
var i, j, tokens, token, len, len2, index,
vals = dateString.split(/[^\d+]/g),
keys = formatString.split(/[^YYYY|YY|MM?|DD?|HH?|mm?|ss?|SS?S?]/g),
dt = { Y: 0, M: 1, D: 1, H: 0, m: 0, s: 0, S: 0 };
var offset = 0, k, length, str,
keys = formatString.match(/YYYY|YY|MMM?M?|DD|HH|hh|mm|ss|SSS?|./g),
dt = { Y: 0, M: 1, D: 1, A: 0, H: 0, h: 0, m: 0, s: 0, S: 0 };
for (i = 0, len = keys.length; i < len; i++) {
tokens = keys[i].match(/YYYY|YY|MM?|DD?|HH?|mm?|ss?|SS?S?/g) || [];
for (j = 0, len2 = tokens.length; j < len2; j++) {
token = tokens[j];
index = keys[i].indexOf(token);
if (index >= 0) {
token = token.replace(/^(M|D|H|m|s)$/, '$1$1');
dt[token.charAt(0)] = (vals[i] || '').slice(index, index + token.length) | 0;
if (token === 'YY') {
dt[token.charAt(0)] += (dt[token.charAt(0)] < 70) ? 2000 : 1900;
forEach(keys, function (key) {
k = key.charAt(0);
length = key.length;
str = dateString.slice(offset);
if (/^(YYYY|YY|MM|DD|HH|hh|mm|ss|SS?S?)$/.test(key)) {
dt[k] = str.slice(0, length) | 0;
if (key === 'YY') {
dt.Y += dt.Y < 70 ? 2000 : 1900;
}
} else if (/^(M|D|H|h|m|s)$/.test(key)) {
str = (str.match(/^\d\d?/) || [''])[0];
length = str.length;
dt[k] = str | 0;
} else if (/^(MMMM?|A)$/.test(key)) {
forEach(locales[lang][key], function (val, i) {
if (!str.indexOf(val)) {
dt[k] = k === 'M' ? i + 1 : i;
length = val.length;
return 0;
}
}
});
}
}
offset += length;
});
return dt;
},
toH = function (h, a) {
return locales[lang].parsers.h(h, a);
};
/**
* formatting strings
* @param {Object} dateObj - the target
* @param {String} formatString - the format string
* formatting a date
* @param {Object} dateObj - target date
* @param {String} formatString - format string
* @param {Boolean} [utc] - output as UTC
* @returns {String} the formatted string
*/
date.format = function (dateObj, formatString) {
var i, len,
tokens = formatString.match(/(YYYY|YY|MMM|MM?|DD?|HH?|hh?|A|mm?|ss?|SS?S?|E|.)/g) || [],
noop = function () {
return null;
};
date.format = function (dateObj, formatString, utc) {
var tokens = formatString.match(/(\[[^\[\]]*]|\[.*\][^\[]*\]|YYYY|YY|MMM?M?|DD|HH|hh|mm|ss|SSS?|ddd?d?|.)/g) || [],
d = new Date(dateObj.getTime() + (utc ? dateObj.getTimezoneOffset() * 60000 : 0)),
locale = locales[lang];
for (i = 0, len = tokens.length; i < len; i++) {
tokens[i] = (formats[tokens[i]] || noop)(dateObj) || tokens[i];
}
d.utc = utc;
forEach(tokens, function (token, i) {
tokens[i] = (locale.formats[token] || function () {}).call(locale, d) || token.replace(/\[(.*)]/, '$1');
});
return tokens.join('');

@@ -127,14 +120,33 @@ };

/**
* parsing date strings
* @param {String} dateString - the date string
* @param {String} formatString - the format string
* @returns {Object} the parsed date
* parsing a date string
* @param {String} dateString - date string
* @param {String} formatString - format string
* @param {Boolean} [utc] - input as UTC
* @returns {Object} the constructed date
*/
date.parse = function (dateString, formatString) {
var dt = parse(dateString, formatString);
return new Date(dt.Y, dt.M - 1, dt.D, dt.H, dt.m, dt.s, dt.S);
date.parse = function (dateString, formatString, utc) {
var dt = parse(dateString, formatString),
dateObj = new Date(dt.Y, dt.M - 1, dt.D, dt.H || toH(dt.h, dt.A), dt.m, dt.s, dt.S);
return utc ? new Date(dateObj.getTime() - dateObj.getTimezoneOffset() * 60000) : dateObj;
};
/**
* addition ( years )
* validation
* @param {String} dateString - date string
* @param {String} formatString - format string
* @returns {Boolean} whether the date string is a valid date
*/
date.isValid = function (dateString, formatString) {
var dt = parse(dateString, formatString),
H = dt.H || toH(dt.h, dt.A),
d = new Date(dt.Y, dt.M - 1, dt.D, H, dt.m, dt.s, dt.S);
return dt.Y === d.getFullYear() && dt.M - 1 === d.getMonth() && dt.D === d.getDate()
&& H === d.getHours() && dt.m === d.getMinutes() && dt.s === d.getSeconds()
&& dt.S === d.getMilliseconds();
};
/**
* adding years
* @param {Object} dateObj - the augend

@@ -152,3 +164,3 @@ * @param {Number} years - the addend

/**
* addition ( months )
* adding months
* @param {Object} dateObj - the augend

@@ -166,3 +178,3 @@ * @param {Number} months - the addend

/**
* addition ( days )
* adding days
* @param {Object} dateObj - the augend

@@ -173,10 +185,7 @@ * @param {Number} days - the addend

date.addDays = function (dateObj, days) {
var d = new Date(dateObj.getTime());
d.setDate(d.getDate() + days);
return d;
return new Date(dateObj.getTime() + days * 86400000);
};
/**
* addition ( hours )
* adding hours
* @param {Object} dateObj - the augend

@@ -187,10 +196,7 @@ * @param {Number} hours - the addend

date.addHours = function (dateObj, hours) {
var d = new Date(dateObj.getTime());
d.setHours(d.getHours() + hours);
return d;
return new Date(dateObj.getTime() + hours * 3600000);
};
/**
* addition ( minutes )
* adding minutes
* @param {Object} dateObj - the augend

@@ -201,10 +207,7 @@ * @param {Number} minutes - the addend

date.addMinutes = function (dateObj, minutes) {
var d = new Date(dateObj.getTime());
d.setMinutes(d.getMinutes() + minutes);
return d;
return new Date(dateObj.getTime() + minutes * 60000);
};
/**
* addition ( seconds )
* adding seconds
* @param {Object} dateObj - the augend

@@ -215,10 +218,7 @@ * @param {Number} seconds - the addend

date.addSeconds = function (dateObj, seconds) {
var d = new Date(dateObj.getTime());
d.setSeconds(d.getSeconds() + seconds);
return d;
return new Date(dateObj.getTime() + seconds * 1000);
};
/**
* addition ( milliseconds )
* adding milliseconds
* @param {Object} dateObj - the augend

@@ -229,13 +229,10 @@ * @param {Number} milliseconds - the addend

date.addMilliseconds = function (dateObj, milliseconds) {
var d = new Date(dateObj.getTime());
d.setMilliseconds(d.getMilliseconds() + milliseconds);
return d;
return new Date(dateObj.getTime() + milliseconds);
};
/**
* subtraction
* subtracting
* @param {Object} date1 - the minuend
* @param {Object} date2 - the subtrahend
* @returns {Object} the date after subtraction
* @returns {Object} the result object after subtraction
*/

@@ -265,24 +262,55 @@ date.subtract = function (date1, date2) {

/**
* validation
* @param {String} dateString - the date string
* @param {String} formatString - the format string
* @returns {Boolean} whether valid date
* leap year
* @param {Object} dateObj - target date
* @returns {Boolean} whether the year is a leap year
*/
date.isValid = function (dateString, formatString) {
var dt = parse(dateString, formatString),
d = new Date(dt.Y, dt.M - 1, dt.D, dt.H, dt.m, dt.s, dt.S);
date.isLeapYear = function (dateObj) {
var y = dateObj.getFullYear();
return (!(y % 4) && !!(y % 100)) || !(y % 400);
};
return dt.Y === d.getFullYear() && dt.M - 1 === d.getMonth() && dt.D === d.getDate()
&& dt.H === d.getHours() && dt.m === d.getMinutes() && dt.s === d.getSeconds()
&& dt.S === d.getMilliseconds();
/**
* setting a locale
* @param {String} [code] - language code
* @returns {String} current language code
*/
date.locale = function (code) {
if (code) {
if (typeof module === 'object' && typeof module.exports === 'object') {
require('./locale/' + code);
}
lang = code;
}
return lang;
};
/**
* leap year
* @param {Object} dateObj - the target
* @returns {Boolean} whether leap year
* adding a new definition of locale
* @param {String} code - language code
* @param {Object} options - definition of locale
* @returns {void}
*/
date.isLeapYear = function (dateObj) {
var y = dateObj.getFullYear();
return (!(y % 4) && !!(y % 100)) || !(y % 400);
date.setLocales = function (code, options) {
var copy = function (src, proto) {
var Locale = function () {}, dst, key;
Locale.prototype = proto;
dst = new Locale();
for (key in src) {
if (src.hasOwnProperty(key)) {
dst[key] = src[key];
}
}
return dst;
},
base = locales[code] || locales.en,
locale = copy(options, base);
if (options.formats) {
locale.formats = copy(options.formats, base.formats);
}
if (options.parsers) {
locale.parsers = copy(options.parsers, base.parsers);
}
locales[code] = locale;
};

@@ -301,1 +329,2 @@

}(this));
/*
date-and-time.js (c) 2015 KNOWLEDGECODE | MIT
date-and-time.js (c) KNOWLEDGECODE | MIT
*/
(function(k){var c={month:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),dayOfWeek:"Sun Mon Tue Wed Thu Fri Sat".split(" "),hour12:{meridian:["a.m.","p.m."],h:function(a){a=a.getHours()||12;return 12<a?a-12:a},A:function(a){return this.meridian[11<a.getHours()|0]}}},d={YYYY:function(a){return("000"+a.getFullYear()).slice(-4)},YY:function(a){return d.YYYY(a).slice(2)},MMM:function(a){return c.month[a.getMonth()]},M:function(a){return String(a.getMonth()+1)},MM:function(a){return("0"+
d.M(a)).slice(-2)},D:function(a){return String(a.getDate())},DD:function(a){return("0"+d.D(a)).slice(-2)},H:function(a){return String(a.getHours())},HH:function(a){return("0"+d.H(a)).slice(-2)},h:function(a){return c.hour12.h(a)},hh:function(a){return("0"+d.h(a)).slice(-2)},A:function(a){return c.hour12.A(a)},m:function(a){return String(a.getMinutes())},mm:function(a){return("0"+d.m(a)).slice(-2)},s:function(a){return String(a.getSeconds())},ss:function(a){return("0"+d.s(a)).slice(-2)},SSS:function(a){return("00"+
a.getMilliseconds()).slice(-3)},SS:function(a){return d.SSS(a).slice(0,2)},S:function(a){return d.SSS(a).slice(0,1)},E:function(a){return c.dayOfWeek[a.getDay()]}},f=function(a,p){var b,c,d,e,f,n,g,k=a.split(/[^\d+]/g),l=p.split(/[^YYYY|YY|MM?|DD?|HH?|mm?|ss?|SS?S?]/g),h={Y:0,M:1,D:1,H:0,m:0,s:0,S:0};b=0;for(f=l.length;b<f;b++)for(d=l[b].match(/YYYY|YY|MM?|DD?|HH?|mm?|ss?|SS?S?/g)||[],c=0,n=d.length;c<n;c++)e=d[c],g=l[b].indexOf(e),0<=g&&(e=e.replace(/^(M|D|H|m|s)$/,"$1$1"),h[e.charAt(0)]=(k[b]||
"").slice(g,g+e.length)|0,"YY"===e&&(h[e.charAt(0)]+=70>h[e.charAt(0)]?2E3:1900));return h};c.format=function(a,c){var b,m,f=c.match(/(YYYY|YY|MMM|MM?|DD?|HH?|hh?|A|mm?|ss?|SS?S?|E|.)/g)||[],e=function(){return null};b=0;for(m=f.length;b<m;b++)f[b]=(d[f[b]]||e)(a)||f[b];return f.join("")};c.parse=function(a,c){var b=f(a,c);return new Date(b.Y,b.M-1,b.D,b.H,b.m,b.s,b.S)};c.addYears=function(a,c){var b=new Date(a.getTime());b.setFullYear(b.getFullYear()+c);return b};c.addMonths=function(a,c){var b=
new Date(a.getTime());b.setMonth(b.getMonth()+c);return b};c.addDays=function(a,c){var b=new Date(a.getTime());b.setDate(b.getDate()+c);return b};c.addHours=function(a,c){var b=new Date(a.getTime());b.setHours(b.getHours()+c);return b};c.addMinutes=function(a,c){var b=new Date(a.getTime());b.setMinutes(b.getMinutes()+c);return b};c.addSeconds=function(a,c){var b=new Date(a.getTime());b.setSeconds(b.getSeconds()+c);return b};c.addMilliseconds=function(a,c){var b=new Date(a.getTime());b.setMilliseconds(b.getMilliseconds()+
c);return b};c.subtract=function(a,c){var b=a.getTime()-c.getTime();return{toMilliseconds:function(){return b},toSeconds:function(){return b/1E3|0},toMinutes:function(){return b/6E4|0},toHours:function(){return b/36E5|0},toDays:function(){return b/864E5|0}}};c.isValid=function(a,c){var b=f(a,c),d=new Date(b.Y,b.M-1,b.D,b.H,b.m,b.s,b.S);return b.Y===d.getFullYear()&&b.M-1===d.getMonth()&&b.D===d.getDate()&&b.H===d.getHours()&&b.m===d.getMinutes()&&b.s===d.getSeconds()&&b.S===d.getMilliseconds()};c.isLeapYear=
function(a){a=a.getFullYear();return!(a%4)&&!!(a%100)||!(a%400)};"object"===typeof module&&"object"===typeof module.exports?module.exports=c:"function"===typeof define&&define.amd?define([],function(){return c}):k.date=c})(this);
(function(p){var d={},k="en",f={en:{MMMM:"January February March April May June July August September October November December".split(" "),MMM:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),dddd:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ddd:"Sun Mon Tue Wed Thu Fri Sat".split(" "),dd:"Su Mo Tu We Th Fr Sa".split(" "),A:["a.m.","p.m."],formats:{YYYY:function(a){return("000"+a.getFullYear()).slice(-4)},YY:function(a){return this.formats.YYYY(a).slice(2)},MMMM:function(a){return this.MMMM[a.getMonth()]},
MMM:function(a){return this.MMM[a.getMonth()]},M:function(a){return""+(a.getMonth()+1)},MM:function(a){return("0"+this.formats.M(a)).slice(-2)},D:function(a){return""+a.getDate()},DD:function(a){return("0"+this.formats.D(a)).slice(-2)},H:function(a){return""+a.getHours()},HH:function(a){return("0"+this.formats.H(a)).slice(-2)},h:function(a){a=a.getHours()||12;return""+(12<a?a-12:a)},hh:function(a){return("0"+this.formats.h(a)).slice(-2)},A:function(a){return this.A[11<a.getHours()|0]},m:function(a){return""+
a.getMinutes()},mm:function(a){return("0"+this.formats.m(a)).slice(-2)},s:function(a){return""+a.getSeconds()},ss:function(a){return("0"+this.formats.s(a)).slice(-2)},SSS:function(a){return("00"+a.getMilliseconds()).slice(-3)},SS:function(a){return this.formats.SSS(a).slice(0,2)},S:function(a){return this.formats.SSS(a).slice(0,1)},dddd:function(a){return this.dddd[a.getDay()]},ddd:function(a){return this.ddd[a.getDay()]},dd:function(a){return this.dd[a.getDay()]},Z:function(a){a=a.utc?0:a.getTimezoneOffset();
var c="-";0>=a&&(c="+",a=-a);return c+("000"+(100*(a/60|0)+a%60)).slice(-4)}},parsers:{h:function(a,c){return(12===a?0:a)+12*c}}}},l=function(a,c){for(var b=0,g=a.length;b<g&&0!==c(a[b],b);b++);},n=function(a,c){var b=0,g,e,d,q=c.match(/YYYY|YY|MMM?M?|DD|HH|hh|mm|ss|SSS?|./g),h={Y:0,M:1,D:1,A:0,H:0,h:0,m:0,s:0,S:0};l(q,function(c){g=c.charAt(0);e=c.length;d=a.slice(b);/^(YYYY|YY|MM|DD|HH|hh|mm|ss|SS?S?)$/.test(c)?(h[g]=d.slice(0,e)|0,"YY"===c&&(h.Y+=70>h.Y?2E3:1900)):/^(M|D|H|h|m|s)$/.test(c)?(d=
(d.match(/^\d\d?/)||[""])[0],e=d.length,h[g]=d|0):/^(MMMM?|A)$/.test(c)&&l(f[k][c],function(a,b){if(!d.indexOf(a))return h[g]="M"===g?b+1:b,e=a.length,0});b+=e});return h};d.format=function(a,c,b){var d=c.match(/(\[[^\[\]]*]|\[.*\][^\[]*\]|YYYY|YY|MMM?M?|DD|HH|hh|mm|ss|SSS?|ddd?d?|.)/g)||[],e=new Date(a.getTime()+(b?6E4*a.getTimezoneOffset():0)),m=f[k];e.utc=b;l(d,function(a,b){d[b]=(m.formats[a]||function(){}).call(m,e)||a.replace(/\[(.*)]/,"$1")});return d.join("")};d.parse=function(a,c,b){a=n(a,
c);a=new Date(a.Y,a.M-1,a.D,a.H||f[k].parsers.h(a.h,a.A),a.m,a.s,a.S);return b?new Date(a.getTime()-6E4*a.getTimezoneOffset()):a};d.isValid=function(a,c){var b=n(a,c),d=b.H||f[k].parsers.h(b.h,b.A),e=new Date(b.Y,b.M-1,b.D,d,b.m,b.s,b.S);return b.Y===e.getFullYear()&&b.M-1===e.getMonth()&&b.D===e.getDate()&&d===e.getHours()&&b.m===e.getMinutes()&&b.s===e.getSeconds()&&b.S===e.getMilliseconds()};d.addYears=function(a,c){var b=new Date(a.getTime());b.setFullYear(b.getFullYear()+c);return b};d.addMonths=
function(a,c){var b=new Date(a.getTime());b.setMonth(b.getMonth()+c);return b};d.addDays=function(a,c){return new Date(a.getTime()+864E5*c)};d.addHours=function(a,c){return new Date(a.getTime()+36E5*c)};d.addMinutes=function(a,c){return new Date(a.getTime()+6E4*c)};d.addSeconds=function(a,c){return new Date(a.getTime()+1E3*c)};d.addMilliseconds=function(a,c){return new Date(a.getTime()+c)};d.subtract=function(a,c){var b=a.getTime()-c.getTime();return{toMilliseconds:function(){return b},toSeconds:function(){return b/
1E3|0},toMinutes:function(){return b/6E4|0},toHours:function(){return b/36E5|0},toDays:function(){return b/864E5|0}}};d.isLeapYear=function(a){a=a.getFullYear();return!(a%4)&&!!(a%100)||!(a%400)};d.locale=function(a){a&&("object"===typeof module&&"object"===typeof module.exports&&require("./locale/"+a),k=a);return k};d.setLocales=function(a,c){var b=function(a,b){var c=function(){},d;c.prototype=b;c=new c;for(d in a)a.hasOwnProperty(d)&&(c[d]=a[d]);return c},d=f[a]||f.en,e=b(c,d);c.formats&&(e.formats=
b(c.formats,d.formats));c.parsers&&(e.parsers=b(c.parsers,d.parsers));f[a]=e};"object"===typeof module&&"object"===typeof module.exports?module.exports=d:"function"===typeof define&&define.amd?define([],function(){return d}):p.date=d})(this);
{
"name": "date-and-time",
"version": "0.1.8",
"description": "Date and time utilities for Node.js and browser",
"version": "0.2.0",
"description": "Minimalism DateTime utility for Node.js and the browser",
"main": "date-and-time.js",
"scripts": {
"test": "mocha test/test.js && mocha-phantomjs test/test.html",
"compile": "./compile"
"test": "./test.sh",
"compile": "./compile.sh"
},

@@ -31,5 +31,6 @@ "repository": {

"expect.js": "^0.3.1",
"mocha": "^2.2.5",
"mocha-phantomjs": "^3.5.3"
"mocha": "^2.3.4",
"mocha-phantomjs": "^3.6.0",
"phantomjs": "1.9.7-15"
}
}
# date-and-time [![Circle CI](https://circleci.com/gh/knowledgecode/date-and-time.svg?style=shield)](https://circleci.com/gh/knowledgecode/date-and-time)
This is a date and time utility for Node.js and browser.
This is a Minimalism DateTime utility for Node.js and the browser.
## WHY
Probably the most famous date library is [Moment.js](http://momentjs.com/). That is so great but has been bloated (12k gz). This will be good solution if you are good enough the most basic function and require a small tool.
Probably the most famous DateTime library is [Moment.js](http://momentjs.com/), that is so great but has been bloated (13.8k gz). This will be a good solution if you require a small one.
## Features
- simple and slim. only 1.2k gz
- not extending built-in objects
- Minimalism. only 1.8k gz
- multi language support
- not extending built-in date object
- legacy IE support. IE6+

@@ -21,5 +22,5 @@

```
browser:
the browser:
```html
<script src="./src/date-and-time.min.js"></script>
<script src="date-and-time.min.js"></script>
```

@@ -32,63 +33,112 @@

```
browser:
AMD:
```javascript
var date = window.date;
require(['date-and-time'], function (date) {
});
```
the browser:
```javascript
window.date; // global object
```
## API
### format(date, formatString)
### format(dateObj, formatString[, utc])
- {object} dateObj - target date
- {string} formatString - format string
- {boolean} [utc] - output as UTC
```javascript
var now = new Date();
date.format(now, 'YYYY/MM/DD HH:mm:ss'); // => '2015/01/02 23:14:05'
date.format(now, 'E MMM DD YYYY'); // => 'Fri Jan 02 2015'
date.format(now, 'ddd MMM DD YYYY'); // => 'Fri Jan 02 2015'
date.format(now, 'hh:mm A [GMT]Z'); // => '11:14 p.m. GMT-0800'
date.format(now, 'hh:mm A [GMT]Z', true); // => '07:14 a.m. GMT+0000'
```
| formatString | meaning | examples |
|:-------------|:------------|:-----------|
| YYYY | year | 2015, 1999 |
| YY | year | 15, 99 |
| MMM | month | Jan, Dec |
| MM | month | 01, 12 |
| M | month | 1, 12 |
| DD | day | 02, 31 |
| D | day | 2, 31 |
| E | day of week | Fri, Sun |
| HH | hour-24 | 23, 08 |
| H | hour-24 | 23, 8 |
| A | meridian | a.m., p.m. |
| hh | hour-12 | 11, 08 |
| h | hour-12 | 11, 8 |
| mm | minute | 14, 07 |
| m | minute | 14, 7 |
| ss | second | 05, 10 |
| s | second | 5, 10 |
| SSS | millisecond | 753, 022 |
| SS | millisecond | 75, 02 |
| S | millisecond | 7, 0 |
### parse(dateString, formatString)
| formatString | meaning | example |
|:-------------|:------------|:------------------|
| YYYY | year | 2015, 1999 |
| YY | year | 15, 99 |
| MMMM | month | January, December |
| MMM | month | Jan, Dec |
| MM | month | 01, 12 |
| M | month | 1, 12 |
| DD | day | 02, 31 |
| D | day | 2, 31 |
| dddd | day of week | Friday, Sunday |
| ddd | day of week | Fri, Sun |
| dd | day of week | Fr, Su |
| HH | hour-24 | 23, 08 |
| H | hour-24 | 23, 8 |
| A | meridiem | a.m., p.m. |
| hh | hour-12 | 11, 08 |
| h | hour-12 | 11, 8 |
| mm | minute | 14, 07 |
| m | minute | 14, 7 |
| ss | second | 05, 10 |
| s | second | 5, 10 |
| SSS | millisecond | 753, 022 |
| SS | millisecond | 75, 02 |
| S | millisecond | 7, 0 |
| Z | timezone | +0100, -0800 |
#### NOTE
`[...]` in the `formatString` will be a comment:
```javascript
date.parse('2015/01/02 23:14:05', 'YYYY/MM/DD HH:mm:ss'); // => Date object
date.parse('02-01-2015', 'DD-MM-YYYY'); // => Date object
date.format(new Date(), 'DD-[MM]-YYYY'); // => '02-MM-2015'
date.format(new Date(), '[DD-[MM]-YYYY]'); // => 'DD-[MM]-YYYY'
```
| formatString | meaning | examples |
|:-------------|:------------|:-----------|
| YYYY | year | 2015, 1999 |
| YY | year | 15, 99 |
| MM | month | 01, 12 |
| M | month | 1, 12 |
| DD | day | 02, 31 |
| D | day | 2, 31 |
| HH | hour-24 | 23, 08 |
| H | hour-24 | 23, 8 |
| mm | minute | 14, 07 |
| m | minute | 14, 7 |
| ss | second | 05, 10 |
| s | second | 5, 10 |
| SSS | millisecond | 753, 022 |
| SS | millisecond | 75, 02 |
| S | millisecond | 7, 0 |
### addYears(date, years)
### parse(dateString, formatString[, utc])
- {string} dateString - date string
- {string} formatString - format string
- {boolean} [utc] - input as UTC
```javascript
date.parse('2015/01/02 23:14:05', 'YYYY/MM/DD HH:mm:ss'); // => date object
date.parse('02-01-2015', 'DD-MM-YYYY'); // => date object
date.parse('11:14:05 p.m.', 'hh:mm:ss A'); // => (23:14:05 GMT-0800)
date.parse('11:14:05 p.m.', 'hh:mm:ss A', true); // => (15:14:05 GMT-0800)
```
| formatString | meaning | example |
|:-------------|:------------|:------------------|
| YYYY | year | 2015, 1999 |
| YY | year | 15, 99 |
| MMMM | month | January, December |
| MMM | month | Jan, Dec |
| MM | month | 01, 12 |
| M | month | 1, 12 |
| DD | day | 02, 31 |
| D | day | 2, 31 |
| HH | hour-24 | 23, 08 |
| H | hour-24 | 23, 8 |
| hh | hour-12 | 11, 08 |
| h | hour-12 | 11, 8 |
| A | meridiem | a.m., p.m. |
| mm | minute | 14, 07 |
| m | minute | 14, 7 |
| ss | second | 05, 10 |
| s | second | 5, 10 |
| SSS | millisecond | 753, 022 |
| SS | millisecond | 75, 02 |
| S | millisecond | 7, 0 |
#### NOTE
When using `hh` or `h` (hour-12), need to use together `A` (meridiem).
### isValid(dateString, formatString)
- {string} dateString - date string
- {string} formatString - format string
```javascript
date.isValid('2015/01/02 23:14:05', 'YYYY/MM/DD HH:mm:ss'); // => true
date.isValid('02-29-2015', 'DD-MM-YYYY'); // => false
```
`formatString` is the same as one of `parse`.
### addYears(dateObj, years)
- {object} dateObj - the augend
- {number} years - the addend
```javascript
var now = new Date();

@@ -98,3 +148,5 @@ var next_year = date.addYears(now, 1); // => Date object

### addMonths(date, months)
### addMonths(dateObj, months)
- {object} dateObj - the augend
- {number} months - the addend
```javascript

@@ -105,3 +157,5 @@ var now = new Date();

### addDays(date, days)
### addDays(dateObj, days)
- {object} dateObj - the augend
- {number} days - the addend
```javascript

@@ -112,3 +166,5 @@ var now = new Date();

### addHours(date, hours)
### addHours(dateObj, hours)
- {object} dateObj - the augend
- {number} hours - the addend
```javascript

@@ -119,3 +175,5 @@ var now = new Date();

### addMinutes(date, minutes)
### addMinutes(dateObj, minutes)
- {object} dateObj - the augend
- {number} minutes - the addend
```javascript

@@ -126,3 +184,5 @@ var now = new Date();

### addSeconds(date, seconds)
### addSeconds(dateObj, seconds)
- {object} dateObj - the augend
- {number} seconds - the addend
```javascript

@@ -133,3 +193,5 @@ var now = new Date();

### addMilliseconds(date, milliseconds)
### addMilliseconds(dateObj, milliseconds)
- {object} dateObj - the augend
- {number} milliseconds -the addend
```javascript

@@ -140,22 +202,18 @@ var now = new Date();

### subtract(date1, date2)
### subtract(dateObj1, dateObj2)
- {object} date1 - the minuend
- {object} date2 - the subtrahend
```javascript
var today = new Date(2015, 0, 2);
var yesterday = new Date(2015, 0, 1);
date.subtract(today, yesterday).toDays(); // => 1
date.subtract(today, yesterday).toHours(); // => 24
date.subtract(today, yesterday).toMinutes(); // => 1440
date.subtract(today, yesterday).toSeconds(); // => 86400
date.subtract(today, yesterday).toDays(); // => 1
date.subtract(today, yesterday).toHours(); // => 24
date.subtract(today, yesterday).toMinutes(); // => 1440
date.subtract(today, yesterday).toSeconds(); // => 86400
date.subtract(today, yesterday).toMilliseconds(); // => 86400000
```
### isValid(dateString, formatString)
### isLeapYear(dateObj)
- {object} dateObj - target date
```javascript
date.isValid('2015/01/02 23:14:05', 'YYYY/MM/DD HH:mm:ss'); // => true
date.isValid('02-29-2015', 'DD-MM-YYYY'); // => false
```
`formatString` is the same as one of `parse`.
### isLeapYear(date)
```javascript
var date1 = new Date(2015, 0, 2);

@@ -168,42 +226,55 @@ var date2 = new Date(2012, 0, 2);

## Locale
Months, day of week, and meridian are written in English. If you want to change language, rewrite them.
It supports the following languages for now:
- Arabic (ar)
- Bengali (bn)
- Chinese (zh-cn)
- Chinese (zh-tw)
- English (en)
- French (fr)
- German (de)
- Hindi (hi)
- Italian (it)
- Japanese (ja)
- Korean (ko)
- Portuguese (pt)
- Russian (ru)
- Spanish (es)
Month, day of week, and meridiem are used English by default. If you want to use other languages, can switch to them as follows:
Node.js:
```javascript
var date = require('date-and-time');
// French
date.month = ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'];
date.dayOfWeek = ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'];
date.format(new Date(), 'E MMM DD YYYY'); // => ven. janv. 02 2015
// Japanese
date.dayOfWeek = ['日', '月', '火', '水', '木', '金', '土'];
date.hour12.meridian = ['午前', '午後'];
date.format(new Date(), 'YYYY年MM月DD日(E) Ahh時'); // => 2015年01月02日(金) 午前10時
date.locale('fr'); // French
date.format(new Date(), 'dddd DD MMMM'); // => 'lundi 11 janvier'
```
AMD:
```javascript
require(['date-and-time', 'locale/de'], function (date) {
date.locale('de'); // German
date.format(new Date(), 'dddd DD MMMM'); // => 'Montag 11 Januar'
});
```
the browser:
```html
<script src="date-and-time.min.js"></script>
<script src="locale/zh-cn.js"></script>
<script>
date.locale('zh-cn'); // Chinese
date.format(new Date(), 'dddd DD MMMM'); // => '星期一 11 一月'
</script>
```
## For developers in Japan (about [12-hour clock](http://en.wikipedia.org/wiki/12-hour_clock))
日本では時刻を午前と午後に分ける12時間制の表現が英米式と異なるばかりでなく、それ自体に曖昧さがあり、しばしば混乱が生じます。
そのため日本のシステム開発の現場では多くの場合24時間制が用いられるかと思いますが、念のため12時間制を用いる必要が生じた場合の対策方法について説明します。
まず、日本での12時間制についてはWikipediaの[こちらのページ](http://ja.wikipedia.org/wiki/%E5%8D%88%E5%89%8D%E3%81%A8%E5%8D%88%E5%BE%8C)で詳しく解説されています。
`date-and-time`では英米式の12時間制をデフォルト実装しているため、日本向けにロジックのカスタマイズが必要です。以下に例をご紹介します。
## Customizing
You can not only switch to other languages, but can customize them as you want:
```javascript
var date = require('date-and-time');
var now = new Date();
date.format(now, 'h:m A'); // => '12:34 p.m.'
// 時刻を12時間制に変換するロジックの書き換え
date.hour12.h = function (d) {
var h = d.getHours();
return h > 11 ? h - 12 : h;
};
date.setLocales('en', {
A: ['AM', 'PM']
});
// 午前/午後を返すロジックの書き換え
date.hour12.A = function (d) {
return this.meridian[d.getHours() > 11 | 0];
};
date.format(now, 'h:m A'); // => '12:34 PM'
```
上記の例はWikipediaで説明されている「日本時計協会」方式です。「日本式」はロジックがより複雑になるため割愛させていただきます。
## Browser Support

@@ -214,1 +285,2 @@ Chrome, Firefox, Safari, Opera, and Internet Explorer 6+.

MIT
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc