LoginSignup
36
35

More than 5 years have passed since last update.

(祝日・和暦・営業日計算対応) 日付モジュール

Last updated at Posted at 2015-04-27

はじめに

日付まわりの処理は、計算が面倒な日本の年号・祝日・営業日の計算などありますね。
そこで、それらに対応したモジュールを作成したので提供します
クライアントサイドでもnodeでも使用することができます

  • github
  • nodeでインストール npm install koyomi
  • クライアントコード コピー元

MITライセンスなので、そのままとか一部だけ切り取って参考にされるとか自由にしてもらってOKです。

使用方法

フォーマット

{String} koyomi.format ({Date|String} date, {String} format)

koyomi.format('2015-4-27', 'Y/M/D');  // '2015/4/27'

その他のパラメータ文字列(フォーマットのYやMなど)はdocs/format.mdで確認してください

和暦

和暦は年区切りと日付区切りの両方をサポートしています

年号 年区切りの期間 日付区切りの期間
平成 1989年- 1989/01/08-
昭和 1926年-1988年 1926/12/25-1989/01/07
大正 1912年-1925年 1912/07/30-1926/12/24
明治 1868年-1911年 1868/01/25-1912/07/29
koyomi.format('2015-4-27', 'GGN年M月D日');  // '平成27年4月27日'

1868年から明治ですが、グレゴリオ歴の導入は1873年(明治6年)以降のため、それ以前は和暦は旧暦のこよみになります。
そのため、1872年以前で和暦の変換を行うと西暦表示になります

祝日

祝日は、1948年7月20日に施行された祝日法に基づき計算されています
祝日データは2015年4月29日時点で決定されているものが反映されています
(2016年から新しく施行される山の日まで)

祝日を得ることは、フォーマットとは別に行いたい場合があるかもしれせん
ある年の祝日の一覧を取得したい場合は次でできます

koyomi.getHolidays(2015);
/*
 {
  '101': '元日',
  '112': '成人の日',
  '211': '建国記念の日',
  '321': '春分の日',
  '429': '昭和の日',
  '503': '憲法記念日',
  '504': 'みどりの日',
  '505': 'こどもの日',
  '506': '振替休日',
  '720': '海の日',
  '921': '敬老の日',
  '922': '国民の休日',
  '923': '秋分の日',
  '1012': '体育の日',
  '1103': '文化の日',
  '1123': '勤労感謝の日',
  '1223': '天皇誕生日'
 }
*/

営業日

営業日の計算も簡単にできます

koyomi.addBiz('2015-5-5', 1); // 2015-5-7

初期設定は次のようになっていますが、変更することも可能です
詳しくは設定値を参照してください

  • 日本の祝日を適用
  • 土日を定休日とする
  • 年末年始は12/29-1/3を休業日とする

ドキュメント一覧

その他ここでは説明しきれなかった機能は下記のドキュメントにまとめてあります

最後に

一度はクラス化しましたが、逆に使い勝手が悪かったので、単なるオブジェクトになりました

本当に何番煎じだよってくらいに同じようなことをやっている人は多いと思いますが、年号、祝日、営業日が一緒になったものは少ないかもしれません
それからパラメータ文字列を追加したり、カスタマイズし易いように工夫しました
parameter.jsにまとめてあるので新しいものをすぐに追加できます
ライセンスはMITなので自由に改変してください
moment.jsのようなDate代替タイプを好む人もいると思います。
しかしkoyomiではその形は採用しませんでした。
日付にこだわらず暦全体を取り扱う形なので、今後機能拡張がしやすいんではないかな?と思っています。

自分のプロジェクトではやたらと帳票が絡むこと多くて、日付の処理を一回ちゃんと作っておきたくこんなものできました。
不具合あったらこちらissuesへお願いします

修正履歴

  • 和暦の入力に対応 (4/28)
  • 祝日に対応(4/29)
  • 営業日計算に対応(5/1)
  • npmに公開(5/1)
  • カレンダーデータの取得に対応(5/4)
  • カレンダーのサンプルを追加(5/4)
  • パラメータ文字列を一新(5/17)
  • クラス化し、さらに多機能に(5/17)
  • オブジェクト化し、大幅に変更を加えた(12/6)

詳しくはChangeLog.mdに

36
35
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
35