Skip to content

Latest commit

 

History

History
141 lines (107 loc) · 3.94 KB

README.md

File metadata and controls

141 lines (107 loc) · 3.94 KB

swedish-holidays

Library for calculating the date of all swedish holidays for any given year.

How to install:

$ npm install swedish-holidays

How to use:

import { getHolidays, getUpcomingHolidays, isHoliday, isPublicHoliday } from 'swedish-holidays';

// Get an array of all holidays for the current
const holidays = getHolidays();

// Get an array of all holidays for a specific year
const holidays2019 = getHolidays(2019);

// Get an array of all upcoming holidays
const upcoming = getUpcomingHolidays();

// Check if today is a holiday
const isItAHolidayToday = isHoliday();

// Or if you want to check a specific date
const isThisAHoliday = isHoliday(new Date('2019-12-24'));

// Check if today is a public holiday in Sweden (see https://www.riksdagen.se/sv/dokument-lagar/dokument/svensk-forfattningssamling/lag-1989253-om-allmanna-helgdagar_sfs-1989-253)
const isItAPublicHolidayToday = isPublicHoliday();

// Or if you want to check a specific date
const isThisAPublicHoliday = isPublicHoliday(new Date('2021-11-01'));

The result will always be an Array filled with JSON formatted holiday information including name and date.

[
    {
        name: 'Julafton',
        date: '2019-12-24T00:00:00.000Z',
        day: 24,
        month: 12,
        year: 2019,
        isPublicHoliday: false,
    },
    {
        name: 'Juldagen',
        date: '2019-12-25T00:00:00.000Z',
        day: 25,
        month: 12,
        year: 2019,
        isPublicHoliday: true,
    },
    ...
]

When using isHoliday the result is false if the provided date is not a holiday, otherwise it is the holiday JSON object.

When using isPublicHoliday the result is false if the provided date is not a public holiday.

Using holidays directly

Each holiday is exported and can be used individually. IHolidayOptions is used to pass parameters to the constructor. Both year and localization is supported.

For convenience holidays may also be imported using their swedish names.

import { MidsummerEve, Midsommarafton } from 'swedish-holidays';

// Both will be equal instances of the same class
const midsummerA = new MidsummerEve({ year: 2022 });
const midsummerB = new Midsommarafton({ year: 2022 });

Localization

If you want the holiday names to be returned using a different language than the default (Swedish), use the language JSON object and modify it before passing it to the getHolidays function.

const { language } = require('swedish-holidays');
const translation = { ...language };
// This value is 'Julafton' by default.
translation.christmasEve = 'Christmas Eve';

const holidays2019 = getHolidays(2019, translation);
// or if you want the current year
// supply a year that is 'falsy' e.g. undefined / null / 0 / false
const holidays = getHolidays(0, translation);

Or use the interface IHolidayNames

import { getHolidays, IHolidayNames } from 'swedish-holidays';

const language: IHolidayNames = {
    ...
    christmasEve: 'Christmas Eve',
    ...
}

const holidays2019 = getHolidays(2019, language);

Limitations

This library can only return valid holidays for years between 1582 and 8702.

If an invalid year is requested, an error will be thrown.

Supported Holidays

  • New Year's Day / Nyårsdagen
  • Twelfth Night / Trettondagsafton
  • Epiphany / Trettondedag jul
  • Maundy Thursday / Skärtorsdagen
  • Good Friday / Långfredagen
  • Holy Saturday / Påskafton
  • Easter Sunday / Påskdagen
  • Easter Monday / Annandag påsk
  • Walpurgis Night / Valborgsmässoafton
  • May First / Första maj
  • Ascension Day / Kristi himmelsfärdsdag
  • Swedish National Day / Sveriges nationaldag
  • Pentecost Eve / Pingstafton
  • Whit Sunday / Pingstdagen
  • Midsummer Eve / Midsommarafton
  • Midsummer Day / Midsommardagen
  • All Saints Eve / Allhelgonaafton
  • All Saints Day / Alla helgons dag
  • Christmas Eve / Julafton
  • Christmas Day / Juldagen
  • Boxing Day / Annandag jul
  • New Years Eve / Nyårsafton