128 lines
1.9 KiB
JavaScript
128 lines
1.9 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 '';
|
|
|
|
return format.replace (this.regexp, this.regexpFunc.bind (this, date));
|
|
}
|
|
};
|
|
|