126 lines
2.0 KiB
JavaScript
126 lines
2.0 KiB
JavaScript
/**
|
|
* Date handling utilities.
|
|
**/
|
|
|
|
Date.prototype.clone = function() {
|
|
return new Date(this.getTime());
|
|
}
|
|
|
|
module.exports =
|
|
{
|
|
WDays:
|
|
[
|
|
'Sunday'
|
|
,'Monday'
|
|
,'Tuesday'
|
|
,'Wednesday'
|
|
,'Thursday'
|
|
,'Friday'
|
|
,'Saturday'
|
|
]
|
|
,AbrWDays:
|
|
[
|
|
'Su'
|
|
,'Mo'
|
|
,'Tu'
|
|
,'We'
|
|
,'Th'
|
|
,'Fr'
|
|
,'Sa'
|
|
]
|
|
,Months:
|
|
[
|
|
'January'
|
|
,'February'
|
|
,'March'
|
|
,'April'
|
|
,'May'
|
|
,'June'
|
|
,'July'
|
|
,'August'
|
|
,'September'
|
|
,'October'
|
|
,'November'
|
|
,'December'
|
|
]
|
|
,AbrMonths:
|
|
[
|
|
'Jan'
|
|
,'Feb'
|
|
,'Mar'
|
|
,'Apr'
|
|
,'May'
|
|
,'Jun'
|
|
,'Jul'
|
|
,'Ago'
|
|
,'Sep'
|
|
,'Oct'
|
|
,'Nov'
|
|
,'Dec'
|
|
]
|
|
|
|
,tokenD: '%A, %B %e'
|
|
|
|
,regexp: new RegExp('%[a-zA-Z]', 'g')
|
|
|
|
,pad: function(number) {
|
|
if (number < 10)
|
|
return '0'+ number.toString();
|
|
|
|
return number.toString();
|
|
}
|
|
|
|
,regexpFunc: function(d, token) {
|
|
switch (token.charAt(1)) {
|
|
// Minutes with 2 digits
|
|
case 'M': return this.pad(d.getMinutes());
|
|
|
|
// Hour with 2 digits in 24 hour format
|
|
case 'H': return this.pad(d.getHours());
|
|
|
|
// Complete time
|
|
case 'T': return d.toLocaleTimeString();
|
|
|
|
// Complete week day name
|
|
case 'A': return _(this.WDays[d.getDay()]);
|
|
|
|
// Abreviated week day name
|
|
case 'a': return _(this.AbrWDays[d.getDay()]);
|
|
|
|
// Day of month with 2 digits
|
|
case 'd': return this.pad(d.getDate());
|
|
|
|
// Day of month
|
|
case 'e': return d.getDate();
|
|
|
|
// Complete month name
|
|
case 'B': return _(this.Months[d.getMonth()]);
|
|
|
|
// Abreviated month name
|
|
case 'b': return _(this.AbrMonths[d.getMonth()]);
|
|
|
|
// Month number with 2 digits
|
|
case 'm': return this.pad(d.getMonth() + 1);
|
|
|
|
// Year with 4 digits
|
|
case 'Y': return d.getFullYear();
|
|
|
|
// Complete date without year
|
|
case 'D': return _(this.tokenD).replace(this.regexp, this.regexpFunc.bind(this, d));
|
|
}
|
|
|
|
return token;
|
|
}
|
|
|
|
,strftime: function(date, format) {
|
|
if (!date)
|
|
return '';
|
|
if (!(date instanceof Date))
|
|
date = new Date(date);
|
|
if (isNaN(date.getTime()))
|
|
return date.toString();
|
|
|
|
return format.replace(this.regexp, this.regexpFunc.bind(this, date));
|
|
}
|
|
};
|