npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

japanese-holidays

v1.0.10

Published

Provides utilities to manipulate japanese holidays.

Downloads

36,344

Readme

japanese-holidays-js Build Status

NPM

日本の休日を JavaScript で計算するためのライブラリです。

ソースは coffeescript で書かれており、それをコンパイルした物が lib に入っています。 ご利用の際には lib 内の japanese-holidays.js や japanese-holidays.min.js を使ってください。

lib/ 以下のファイルは自動生成された物です。これらを編集しないようにしてください。

Use with Node

$ npm install japanese-holidays

Use on the Web

<script src="https://cdn.rawgit.com/osamutake/japanese-holidays-js/v1.0.10/lib/japanese-holidays.min.js"></script>

使い方

JapaneseHolidays.isHoliday(date, furikae = true)

指定された日が休日かどうかを判定して、休日ならその名前を返します。

休日でなければ undefined を返します。

furikae に false を指定すると振替休日を除きます。

内部ではキャッシュした値を使って計算するため繰り返し呼ぶ際にはとても高速に動作します。

Node:

// デバッグ用のソースマップサポート
// 例外発生時に CoffeeScript の行番号を出すことができる
require('source-map-support').install();

// ここからが本文
var JapaneseHolidays = require('japanese-holidays');

var today = new Date();
var holiday = JapaneseHolidays.isHoliday(today);
if(holiday) {
    console.log("今日は " + holiday + " です");
} else {
    console.log("今日は祝日ではありません");
}

On the web:

<script src="https://cdn.rawgit.com/osamutake/japanese-holidays-js/v1.0.10/lib/japanese-holidays.min.js"></script>
<script>
var today = new Date();
var holiday = JapaneseHolidays.isHoliday(today);
if(holiday) {
    alert("今日は " + holiday + " です");
} else {
    alert("今日は祝日ではありません");
}
</script>

JapaneseHolidays.getHolidaysOf(year, furikae = true)

指定された年の休日を配列にして返します。

配列には {month: m, date: d, name: s} の形で表わされた休日が日付順に並びます。

furikae に false を指定すると、振替休日および国民の休日を除きます。

Node:

// デバッグ用のソースマップサポート
// 例外発生時に CoffeeScript の行番号を出すことができる
require('source-map-support').install();

// ここからが本文
var JapaneseHolidays = require('japanese-holidays');

var today = new Date();
var holidays = JapaneseHolidays.getHolidaysOf( today.getFullYear() );
holidays.forEach(function(holiday) {
    console.log(
        today.getFullYear() + "年" +
        holiday.month + "月" + 
        holiday.date + "日は " +
        holiday.name + " です"
    );
});

On the web:

<script src="https://cdn.rawgit.com/osamutake/japanese-holidays-js/v1.0.10/lib/japanese-holidays.min.js"></script>
<script>
var today = new Date();
var holidays = JapaneseHolidays.getHolidaysOf( today.getFullYear() );
holidays.forEach(function(holiday) {
    document.write(
        today.getFullYear() + "年" +
        holiday.month + "月" + 
        holiday.date + "日は " +
        holiday.name + " です<br>"
    );
});
</script>

Properties

  • month: Integer - 月 (1~12)
  • date: Integer - 日 (1~31)
  • name: String - 休日名

春分・秋分の求め方について

春分・秋分の日は年によって日付が異なります。

この理由は、暦の上での1年の長さが閏年分だけ等間隔にならないため、 本来ほぼ正確に等間隔でやってくる春分・秋分の日付がカレンダー上でずれてしまうためです。 とはいえ、春分・秋分の間隔も完全に等間隔ではなく、毎年少しずつ揺れ動くようです。

Wikipedia の 春分秋分 のページに 1600年~2399年 のデータがあって、そこから周期を求めることで、 春分についてはすべての範囲で計算と実測とが一致しました。秋分については ふらつきが大きいようで、計算だけではどうしても一致しなかったため、 いくつかの値についてのみ個別に指定しています。

結果として、1600年~2399年 の範囲で上記 Wikipedia のページにあった日付を 再現できています。

タイムゾーンについて

JapaneseHolidays.isHoliday は与えられた「時刻」ではなく「日付」を元に祝日を判定します。 例えばニュージーランドで

    JapaneseHolidays.isHoliday(new Date(2016,3-1,8)); 

とすると、ニュージーランド時間の 2016-03-08 00:00:00 が関数に渡されます。 これは日本時間では 2016-03-07 21:00:00 を表しますが、 isHoliday は与えられた日付 3/8 が休日かどうかを判定するということです。

多くの場合これは利用者の意図するところだと思います。

万一、与えた「時刻」において日本で休日かどうかを判定する必要があれば、

    JapaneseHolidays.isHolidayAt(new Date(2016,3-1,8)); 

を呼んでください。例えばニュージーランドでこれを呼べば、3/7 が休日かどうかが判定されます。

License

MIT

ChangeLog

  • 2019-02-15 : 1.0.7
    • 2019年の改元に伴う休日設定&変更に対応しました
  • 2019-02-21 : 1.0.8
    • 2020年のオリンピック特例に対応しました
    • スポーツの日に対応しました
  • 2019-09-03 : 1.0.9
    • minify 版が壊れていたのを直しました
  • 2021-06-29 : 1.0.10
    • 2020年のオリンピック特例に対応しました
    • スポーツの日に対応しました