Coder Social home page Coder Social logo

koyomi's Introduction

koyomi @ v0.5.3

日本の暦に基づいて日時に計算を行うモジュールです このモジュールは、サーバサイド、クライアントサイド両対応です

主な機能

  • 日時への変換
  • 日時から文字列へのフォーマット
  • 日にち、時間等の加減算・日数の計算
  • 営業日の加減算・日数の計算
  • 祝日の取得
  • カレンダーデータの取得

利用方法

node

npm経由でインストールしてください

npm install koyomi

var koyomi = require('koyomi');
var wareki = koyomi.format('2015-7-15', 'WAREKI');
var deadline = koyomi.addBiz('2015-5-1', 10);

クライアントサイド

public/koyomi.min.jsを読み込んでください

<script src="koyomi.min.js"></script>
<script>
  var wareki = koyomi.format('2015-7-15', 'WAREKI');
  var deadline = koyomi.addBiz('2015-5-1', 10);
</script>

日本の暦

年度

年度とは、特定の目的のために規定された1年間の区切り方です 日本での会計年度は4月に始まり3月末に終わることが多いため、年度を基準とした計算が必要な場面が多くなります koyomiでは既定で年の始まりを4月として計算します (設定で年の始まりを変更できます)

和暦

日本の暦では、年号を使用した日付の表記(和暦)がよく使用されます koyomiでは和暦でフォーマットすることができます さらに年区切りと日付区切りの両方をサポートしています

年号 年区切りの期間 日付区切りの期間
令和 2019年- 2019/05/01-
平成 1989年-2018年 1989/01/08-2019/4/30
昭和 1926年-1988年 1926/12/25-1989/01/07
大正 1912年-1925年 1912/07/30-1926/12/24
明治 1868年-1911年 1868/01/25-1912/07/29

(注意) 明治は1868年に始まっていますが、グレゴリオ歴の導入が1873年(明治6年)以降のため、それ以前は和暦は旧暦のこよみになります koyomiでは旧暦のサポートはしていません そのため、1872年以前での和暦のフォーマットは自動的に西暦表示になります

祝日

koyomiに設定されている祝日は、1948年7月20日に施行された祝日法に基づき計算されています 祝日をフォーマットや営業日の計算に使用できます 祝日データは2015年5月時点で決定されているものが反映されています (2016年から新しく施行される山の日まで)

営業日

ビジネス上では見積もり時に何営業日で納品など、営業日ベースの計算が必須です 営業日の計算は煩雑になりやすいため、日付を明記することが面倒です それらを自動計算させることができます

一部機能の紹介

  • フォーマット。koyomi.format('2015-5-5', 'wareki')'平成二十七年五月五日'
  • 加減算。koyomi.add('2015-5-5', '3日')new Date('2015-5-8')
  • 営業日の計算。koyomi.addBiz('2015-5-5', 3)new Date('2015-5-11')
  • 営業日数。koyomi.biz('2015-1-1', '2015-12-31')242

このほかにも多くの機能を利用することができます 詳しくは下記のドキュメントを参照してください

ドキュメント一覧

注意

関数の引数にDATEとある場合は、koyomi.toDateの第一引数に設定できる値です 便宜上DATEとしていますが、Dateインスタンスではないので注意してください 詳しくは補助関数のtoDateの項目で確認してください

使用例などにD2015-11-23とDが先頭に追加された表記があった場合は、new Date(2015, 10, 23)の意味です

koyomi's People

Contributors

dependabot[bot] avatar kobasis avatar leitdeux avatar yukik avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

koyomi's Issues

祝日(2019-2020年対応)の変更ファイルについて

2019年および2020年では祝日が変更されておりそのためlib/config.jsの変更いたします。
ただ、私のPC環境が整っておらずGitへの反映が遅くなりそうですので、先にこちらにソースのみアップします。(テスト済みです)

lib/config.jsの約70行目のHOLIDAYSの定義を次のように変更してください。

ブラウザで使用するpublic/koyomi.min.jsもあわせて更新する必要があります。
ただ、私がgulpモジュールの準備がまだできておらずこちらも未作業です。
急ぎ必要な方はお手数ですが個別にnodejsの環境をでgulpを実行してください。

/**
 * 祝日法施行以降(1948/7/20-)の祝日を定義する
 * 改正があった場合は、スペース区切りで複数設定することができる
 * 年の部分に-を後につけることで開始年を、-を間に挟むことで期間を示すことができる
 * ハッピーマンデー法に対応。第2月曜日などの祝日を示すためには日の部分に2monとする
 * 春分の日、秋分の日、振替休日、国民の休日は個別に計算するため、日付は不要
 */
var HOLIDAYS = [



  // 祝日
  '元日         1949-/1/1',
  '成人の日     1949-1999/1/15  2000-/1/2mon',
  '建国記念の日 1967-/2/11',
  '天皇誕生日   2020-/2/23',
  '春分の日',
  '天皇誕生日   1949-1988/4/29',
  'みどりの日   1989-2006/4/29',
  '昭和の日     2007-/4/29',
  '憲法記念日   1949-/5/3',
  'みどりの日   2007-/5/4',
  'こどもの日   1949-/5/5',
  '海の日       1996-2002/7/20  2003-2019/7/3mon  2020/7/23  2021-/7/3mon',
  'スポーツの日 2020-/7/24',
  '山の日       2016-2019/8/11  2020/8/10  2021-/8/11',
  '敬老の日     1966-2002/9/15  2003-/9/3mon',
  '秋分の日',
  '体育の日     1966-1999/10/10 2000-2019/10/2mon',
  '文化の日     1948-/11/3',
  '勤労感謝の日 1948-/11/23',
  '天皇誕生日   1989-2018/12/23',

  // 特別な休日
  '振替休日',
  '国民の休日',

  // 皇室慶弔行事
  '皇太子・明仁親王の結婚の儀  1959/4/10',
  '昭和天皇の大喪の礼          1989/2/24',
  '即位の礼正殿の儀            1990/11/12  2019/10/22',
  '皇太子・徳仁親王の結婚の儀  1993/6/9',
  '天皇の即位                  2019/5/1'

];

Date Objectの認識異常

$ node -v 
v6.3.0

$ node
> var koyomi = require('koyomi');
# Dateを定義して導入すると、当日の日付(2016-10-20実行したので)しかでません
> new Date("2016-10-10")
2016-10-10T00:00:00.000Z
> var oct10 = new Date("2016-10-10")
undefined
> koyomi.format(oct10, 'Y/M/D');
'2016/10/20'
# 直接Dateをnewして入れても、当日の日付しか反映しません
> koyomi.format(new Date("2016-10-09"), 'Y/M/D');
'2016/10/20'

# ただし、以下の使い方はできました
> oct10.toLocaleDateString()
'2016-10-10'
> koyomi.format(oct10.toLocaleDateString(), 'Y/M/D');
'2016/10/10'
> koyomi.format(new Date("2016-10-09").toLocaleDateString(), 'Y/M/D');
'2016/10/9'
> koyomi.getHolidayName (new Date("2016-01-01").toLocaleDateString())
'元日'

以上、よろしくお願いします。

v1.0向けマイルストーン

version1.0にするために行う事をまとめて!

  • ドキュメントの整理
  • coverage100%保証
  • contributerを1名以上入れ保守を複数人体制にする
  • デモの充実

今後の暦対応について

いつも有り難く使わせてもらっています。

しばらく更新がないようなので少し不安がありますが、下記の対応はどのようになりますでしょうか?

  • 平成31年の改元
  • 2020年、オリンピック開催に伴う祝日の変更
    • 海の日
    • 山の日
    • 体育の日

npmのインストール方法

qiitaから来ました。
READMEのインストール方法にnpm install koyomiが記述されている方がわかりやすいと思いましたがいかがでしょうか。

和暦○年の機能がほしい

「和暦○年」と出すだけの機能がほしいですね。
漢数字だけでなく「昭和2年」みたいな数字や、「平成元年」みたいな元年表示にするかどうかなど。

あとこんな感じの例がREADMEにあるといいと思いました。

var koyomi = require('koyomi');
console.log(koyomi.getEra('1800')['N']);
console.log(koyomi.getEra('1897')['N']);
console.log(koyomi.getEra('1912')['N']);
console.log(koyomi.getEra('1926')['N']);
console.log(koyomi.getEra('1989')['N']);

結果

西暦
明治
大正
昭和
平成

元号の1日ずれ

プログラミングの経験が浅いため私の間違いかもしれませんが、報告します。

令和と平成だけ確認しました。
koyomi.format('2019-05-01', 'ggn年M月D日')
の結果が
平成31年5月1日
と5月1日が平成になってしまいます。2日から令和となります。

同じく1989-01-08が平成とならず、昭和64年1月8日となります。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.