ガレコレ [Garage Collection]
2017年10月10日(火)
国民の祝日について #HTML5&CSS3&JavaScript
 旧 体育の日にちなんで、カレンダーのプログラミング。PHP用のは稼働していますが、JavaScript用はお蔵入りしていました。いい機会なので、移植してみました。



【年号】

■明治

 1868年 1月25日(明治元年1月1日[天保暦])
~1912年 7月30日(明治45年)

・1868年10月23日(慶応4年9月8日[天保暦])
 明治天皇の即位による代始改元

・1868年 1月25日
 遡って、慶応4年1月1日[天保暦]を、明治元年1月1日[天保暦]としました。

・1872年12月31日=明治5年12月2日[天保暦]まで
 天保暦(旧暦、太陰太陽暦)が使用されていました。

・1873年 1月 1日(明治6年)=明治5年12月3日[天保暦]から
 太陽暦(新暦)が採用されました。

・1898年 5月11日(明治31年)
 [グレゴリオ暦]が採用されました。

・明治と大正の切り替わりの日は、重なっています。


■大正

 1912年 7月30日(大正元年)
~1926年12月25日(大正15年)

・大正と昭和の切り替わりの日は、重なっています。


■昭和

 1926年12月25日(昭和元年)
~1989年 1月 7日(昭和64年)


■平成

 1989年 1月 8日(平成元年)




【国民の祝日について】

1948年 7月20日 昭和23年法律第178号
・「元日」1月1日
・「成人の日」1月15日
・「春分の日」春分日
・「天皇誕生日」4月29日
・「憲法記念日」5月3日
・「こどもの日」5月5日
・「秋分の日」秋分日
・「文化の日」11月3日
・「勤労感謝の日」11月23日

1964年10月10日 東京オリンピック開会式

1966年 6月25日 昭和41年法律第86号
・「建国記念の日」追加
 ・昭和41年政令第376号により2月11日
・「敬老の日」9月15日追加
・「体育の日」10月10日追加

1973年 4月12日 昭和48年法律第10号
・第三条2項 振替休日追加

1985年12月27日 昭和60年法律第103号
・第三条3項 挟み休日追加

1989年 2月17日 平成元年法律第5号
・「天皇誕生日」4月29日→12月23日変更
・「みどりの日」4月29日追加

1995年 3月 8日 平成7年法律第22号
・1996年1月1日から施行
・「海の日(7月20日)」追加

1998年10月21日 平成10年法律第141号
・2000年1月1日から施行
・いわゆるハッピーマンデー法
・「成人の日」1月15日→1月第2月曜日変更
・「体育の日」10月10日→10月第2月曜日に変更

2001年 6月22日 平成13年法律第59号
・2003年1月1日から施行
・「海の日」7月20日→7月第3月曜日変更
・「敬老の日」9月15日→9月第3月曜日変更

2005年 5月20日 平成17年法律第43号
・2007年1月1日から施行
・「みどりの日」4月29日→5月4日変更
・「昭和の日」4月29日追加

2014年 5月30日 平成26年法律第43号
・2016年1月1日から施行
・「山の日」8月11日追加 


1959年 3月17日 昭和34年法律第16号
・皇太子明仁親王の結婚の儀の行われる日を休日とする法律
 [1959年4月10日]

1989年 2月17日 平成元年法律第4号
・昭和天皇の大喪の礼の行われる日を休日とする法律
 [1989年2月24日]

1990年 6月 1日 平成2年法律第24号
・即位礼正殿の儀の行われる日を休日とする法律
 [1990年11月12日]

1993年 4月30日 平成5年法律第32号
・皇太子徳仁親王の結婚の儀の行われる日を休日とする法律
 [1993年6月9日]


5月6日の振替休日 [GW]
 5月3日(金) 5月4日(土) 5月5日(日) 5月6日(月)
 5月3日(土) 5月4日(日) 5月5日(月) 5月6日(火)
 5月3日(日) 5月4日(月) 5月5日(火) 5月6日(水)

9月22日の国民の休日 [SW]
 9月21日(月)敬老の日
 9月22日(火)国民の休日
 9月23日(水)秋分の日


P.S. 実用的には、_holiday($y,$m,$d)関数で、判断を返すプログラミングになるでしょう。


P.S.1-2 結局、JavaScript部分を、calendar.jsにまとめて、JavaScriptライブラリとしました。本体のHTMLファイルはスッカラカンなのであしからず。
http://neconote.jp/prg/calendar.js


P.S.2 1月1日は、元日[がんじつ]であって、元旦[がんたん]ではありません。


P.S.3 表計算ソフトExcelでは、1900年2月29日が存在しています。他のプログラミング言語におけるUNIXタイムと1日分ずれますので、注意が必要です。

日付    標準(数値)
1900/1/1  1
1900/2/28 59
1900/2/29 60
1900/3/1  61
1900/3/2  62


P.S.3-2 この問題が存在していることは覚えていたのですが、その由来が明治時代の太陽暦にあって、日本事情に合わせてくれていたとばかり思っていたら、ちゃんと1900年の前に法律で閏年を変更していますね。

 Microsoftの公式見解では、「Excelの日付システムは、他の表計算ソフトとの互換性を完全に満たすように定義されています。」とのこと。誤りが伝播して、今に至るということです。


P.S.4 分岐ロジックを変更して、分かりやすくしました。

月→年→日→曜

↓変更

月→日→曜→年
http://neconote.jp/prg/holiday.html
 
お問い合わせ


by Network Communication Note