我有一个可能取决于位置的应用程序,我需要一个工作流程来处理繁忙的日历日。例如,在德国,我的假期与韩国不同。
是否有可能(例如JavaScript库)自动化它?
目前我只在德国使用它,但我需要更多国家(例如韩国):
easter: {
'2015': {year: 2015, month: 3, day: 5},
'2016': {year: 2016, month: 2, day: 27},
'2017': {year: 2017, month: 3, day: 16},
'2018': {year: 2018, month: 3, day: 1},
'2019': {year: 2019, month: 3, day: 21},
'2020': {year: 2020, month: 3, day: 12},
'2021': {year: 2021, month: 3, day: 4},
'2022': {year: 2022, month: 3, day: 17},
'2023': {year: 2023, month: 3, day: 9},
'2024': {year: 2024, month: 2, day: 31},
'2025': {year: 2025, month: 3, day: 20}
},
getHolidays: function () {
var year = moment().year();
var nextYear = year + 1;
var staticHolidays = this.getStaticHolidays(year);
var variableHolidays = this.getVariableHolidays(this.getEasterMoment(year));
var staticHolidaysNextYear = this.getStaticHolidays(nextYear);
var variableHolidaysNextYear = this.getVariableHolidays(this.getEasterMoment(nextYear));
return staticHolidays.concat(variableHolidays, staticHolidaysNextYear, variableHolidaysNextYear);
},
getEasterMoment: function (year) {
return moment(this.easter[year]);
},
getStaticHolidays: function (year) {
var staticHolidays = [];
staticHolidays.push(moment({year: year, month: 0, day: 1})); // Neujahr / New Year's Day
staticHolidays.push(moment({year: year, month: 0, day: 6})); // Hl. Drei Könige / Epiphany
staticHolidays.push(moment({year: year, month: 4, day: 1})); // Tag d. Arbeit / Labor Day
staticHolidays.push(moment({year: year, month: 9, day: 3})); // Tag d. dt. Einheit / German Unity Day
staticHolidays.push(moment({year: year, month: 10, day: 1})); // Allerheiligen / All Saints
staticHolidays.push(moment({year: year, month: 11, day: 24})); // Hl. Abend / Cheistmas Eve
staticHolidays.push(moment({year: year, month: 11, day: 25})); // 1. Weihnachtstag / Christmas Day
staticHolidays.push(moment({year: year, month: 11, day: 26})); // 2. Weihnachtstag / Boxing Day
staticHolidays.push(moment({year: year, month: 11, day: 31})); // Silvester / Ney Year's Eve
return staticHolidays;
},
getVariableHolidays: function (easterMoment) {
var variableHolidays = [];
variableHolidays.push(easterMoment.clone().subtract(2, 'days')); // Karfreitag / Good Friday
variableHolidays.push(easterMoment.clone().add(1, 'days')); // Ostetmontag / Easter Monday
variableHolidays.push(easterMoment.clone().add(39, 'days')); // Christi Himmelfahrt / Ascension Day
variableHolidays.push(easterMoment.clone().add(50, 'days')); // Pfingstmontag / Whit Monday
variableHolidays.push(easterMoment.clone().add(60, 'days')); // Fronleichnam / Corpus Christi
return variableHolidays;
}
P.S。在韩国,我们没有复活节。