ダーク/ライト切り替え

JavaScriptで祝祭日、休日を自動で検出する方法

投稿日2024-09-05

Picture of the logo


目次

目次を読み込み中...

プログラムの自動化などで、平日にだけ実行したいと思った事はありませんか?そんな時に便利な祝祭日を自動で判別するプログラムを作ってみましたので共有したいと思います。

# 日本における休日とは

我が国における休日とは、法定休日、WKD(週休日)、年末年始の3つです。ちなみに、ここでは土曜日も休日として扱います。土曜を休日にしたくない人は土曜日の部分をカットして下さい。

# 全体的な流れ

isHoliday()は、引数dateにDate型の日付を渡すとtrue/falseを返します。 dateが休日ならtrueを、休日でないならfalseを返します。 isHoliday()はisSunday()やisFixedHoliday()などの小さな補助関数で構成されています。これから休日となるパターンを一つ一つ追加していきましょう。


            

# 土日のチェック

isSunday()やisSaturday()は、引数で渡したdayOfWeekが0(日曜)か6(土曜)のときにtrueを返します。


            

# 固定の祝祭日をチェック

isFixedHoliday()は、日本のカレンダーで毎年固定された休日、つまり2月11日、3月20日、4月29日、5月3日、5月4日、5月5日、9月15日、9月23日、10月10日、11月3日、11月23日、12月23日のいずれかがtrueを返します。


            

# 年によって変動する休日

次は年によって変動する休日を調べるためのisVariableHoliday()です。第何月曜日かを調べる事で対処します。


            

# 春分の日と秋分の日

春分の日と秋分の日も特殊な計算が必要なので計算します。ただし条件が複雑なので、年によっては完全にカレンダーどおりにはならないかもしれません。


            

# 振替休日

前日が日曜日で休日だった場合、翌月曜日は振替休日となります。今度は月曜日で


            

# 国民の休日

いよいよ最後の国民の休日です。国民の休日とはWikipediaによれば 前後が祝日である平日は、国民の休日となり、休日となる。 との事です。


            

# 出来上がったコード

全てを繋げて一つのコードなった完成形はこちらです。これでカレンダーで赤い日はtrue、黒い日と土曜日はfalseになるようになりました。ただし国の行事など特殊な事情が発生した場合には対応できません。また、年末年始やお盆なども対応していませんので、必要な方は適宜修正してください。






関連記事

Node.jsプロジェクトを本番環境にデプロイする時の備忘録【初学者向け】

blog

本番環境へのデプロイは、開発環境とは異なる考慮が必要です。特に依存関係の管理、ビルドプロセス、セキュリティの観点から慎重な準備が求められます。本記事では、個人的な備忘録を兼ねてNode.jsプロジェクトのデプロイ時に知っておくべき重要なポイントについて解説します。

GO言語サーバーとUnityクライアント(C#)をgRPCで接続テストしてみた【入門レベル】

blog

UnityでgRPCをする場合、Magic Onionを使うのがお手軽ですが、今回はGO言語でサーバーを構築してみたかったので最低限の接続機能を自作してみました。備忘録を兼ね書き残しておきます。

【Python】英語から日本語への翻訳と音声出力【初心者】

blog

Pythonを利用した英語翻訳と日本語読み上げを簡単に実装する方法を紹介します。

Django4にdjango-dbbackupでAWS S3を保存先にしたらハマったので・・・

blog

djangoフレームワークでデータベースのバックアップにdjango-dbbackupを使う人は多いと思いますが、Djangoバージョン4などの比較的新しいバージョンにdjango-dbbackupやbotoをインストールした場合、そのままでは動かない可能性が高いので解決法を書き残しておきます。

【Unity】文字列に禁止ワードが含まれているかチェックをする方法

blog

Unityで下品な単語など望ましくない言葉が含まれていないかをチェックする方法を紹介します

Djangoフレームワークで国別アクセス制限を実装する方法

blog

サーバーを運用していると、特定の国からのアクセスを制限したいと思うことはありませんか?例えば、セキュリティの理由や、ビジネスの対象地域を限定したい場合などです。Djangoを使っている場合、簡単に特定の国からのアクセスを制限できる方法があります。この記事では、Djangoで国別アクセス制限を実装する方法を紹介します。

Django Rest FrameworkでTaggitによるフィルタリングを最速で実装する

blog

このブログサイトにも利用しています。Django Restに特化した解説が見つからなかったので備忘録も兼ねて書き残しておきます。

Unityでモザイク処理をする方法

blog

今回はUnityで画像にモザイク処理を掛ける方法を紹介します。標準機能では用意されていないようなのでカスタムシェーダーで実装します。

FirebaseStorageからUnityへファイルを読み込み、Resourcesに保存する

blog

UnityでFIREBASEのStorageサービスから画像ファイルをダウンロードしてシーン上に表示、保存するまでの簡単な手順紹介です。

【Python】最強のパスワードの作り方わかったw【超初心者向け】

blog

pythonの標準モジュールでUUIDというモジュールを使うと簡単に強度な乱数を生成できます。32桁の16進数とそれを4つの-(ハイフン)で区切られた合計36文字の文字列をランダムで生成します。これだけで2^128とおりのパターンがあるので一意の固有の識別番号と言っても過言ではないでしょう。今回はそれを2つ並べます。


スポンサーリンク

このサイトをシェアする