ephemeral
Version:
Formatting dates with English prepositions & holiday names
54 lines (48 loc) • 1.85 kB
JavaScript
//## Moment.JS Holiday Plugin
//
//Usage:
// Call .holiday() from any moment object. If date is a US Federal Holiday, name of the holiday will be returned.
// Otherwise, return nothing.
//
// Example:
// `moment('12/25/2013').holiday()` will return 'Christmas Day'
//
//Holidays:
// You can configure holiday bellow. The 'M' stands for Month and represents fixed day holidays.
// The 'W' stands for Week, and represents holidays with date based on week day rules.
// Example: '10/2/1' Columbus Day (Second monday of october).
//
//License:
// Copyright (c) 2013 [Jr. Hames](http://jrham.es) under [MIT License](http://opensource.org/licenses/MIT)
(function() {
var moment = typeof require !== 'undefined' && require !== null ? require('moment') : this.moment;
//Holiday definitions
var _holidays = {
'M': {//Month, Day
'01/01': 'New Year\'s Day',
'07/04': 'Independence Day',
'10/31': 'Halloween',
'11/11': 'Veteran\'s Day',
'11/28': 'Thanksgiving Day',
'11/29': 'the Day after Thanksgiving',
'12/24': 'Christmas Eve',
'12/25': 'Christmas Day',
'12/31': 'New Year\'s Eve'
},
'W': {//Month, Week of Month, Day of Week
'1/3/1': 'Martin Luther King Jr. Day',
'2/3/1': 'Washington\'s Birthday',
'5/5/1': 'Memorial Day',
'9/1/1': 'Labor Day',
'10/2/1': 'Columbus Day',
'11/4/4': 'Thanksgiving Day'
}
};
moment.fn.holiday = function() {
var diff = 1+ (0 | (this._d.getDate() - 1) / 7), memorial = (this._d.getDay() === 1 && (this._d.getDate() + 7) > 30) ? '5' : null;
return (_holidays.M[this.format('MM/DD')] || _holidays.W[this.format('M/'+ (memorial || diff) +'/d')]);
};
if ((typeof module !== 'undefined' && module !== null ? module.exports : void 0) != null) {
module.exports = moment;
}
}(this));