blogSetomits

Hello

Python で祝日判定

jholiday.py

Python で祝日判定をする方法を調べていたのですが、 Python は無かったものの VB 向けや JavaScript 向けを始め、いろんな言語向けの祝日判定が紹介されているAddinBox(祝日マクロ-1)にあたりました。どうせいるものだしということで、 Python 向けのものを書いて角田さんに送りました。

# こないだの4月29日から昭和の日って言ったんですね。知らんかった〜。
http://straitmouth.jp/app/python/jholiday_py

からダウンロードできるようにしておきますが、サンプルに書いてあるような感じで


>>> import jholiday
>>> jholiday.holiday_name(2007, 4, 28)
None
>>> jholiday.holiday_name(2007, 4, 29)
u'\u662d\u548c\u306e\u65e5'
>>> print jholiday.holiday_name(2007, 4, 29).encode('euc-jp')
昭和の日

というように使います。holiday_name() に日付を表す3つの整数を与えると、その日が祝日である場合は Unicode でその名前が、そうでない場合は None が返ります。一旦 datetime.date のオブジェクトを作っているので、不正な値を渡すとそこでこけます。
Posted at 11:17 by setomits Comments : 8
1月1日は「元旦」ではなくて「元日」なので、修正しなくちゃいけなかったのに忘れてたみたい。
<a target="_blank" href="http://straitmouth.jp/app/python/jholiday_py">http://straitmouth.jp/app/python/jholiday_py</a>
はこの点を修正しています。
Posted at by setomits
オリジナルの作者の角田さんからご連絡頂き、秋分の日を計算する内部関数である _autumn_equinox 内(75行目)にコピペミスがあることがわかりました。正しくは
<blockquote>elif y <= 2150:</blockquote>
とすべきところを
<blockquote>elif y <= 1979:</blockquote>
としてしまっていました。
修正したものを
<a target="_blank" href="/app/python/jholiday_py">http://straitmouth.jp/app/python/jholiday_py</a>
に置いているので、利用されている方は修正あるいはダウンロードし直して下さい。
Posted at by setomits
こんにちは & 御無沙汰しています。 AddinBox の角田です。

・即位に伴う天皇誕生日の変更
  2020年より [ 12/23 ⇒ 2/23 ]、2019年には天皇誕生日は無し
・体育の日 の改名
  2020年より「スポーツの日」に改名
・東京五輪特措法による2020年の祝日の移動
  海の日:7/20(3rd Mon)⇒7/23
  スポーツの日:10/12(2nd Mon)⇒7/24
  山の日:8/11⇒8/10
という祝日法の改正がありましたので、移植して戴いたプログラムも修正しました。
http://addinbox.sakura.ne.jp/holiday_logic.htm

検証用の祝日一覧(JavaScript)は各言語のページ先頭にリンクを用意してあります。
間違いなど気付いた点があれば、お知らせください。

なお、今回の修正の際に、幾つか見落としていた不具合を見つけましたので併せて修正してあります。修正箇所 ・修正理由は各言語のページに記載してあります。
修正前ソースコードは InternetArchive から参照できます。
Posted at by AddinBox(角田)
ご連絡ありがとうございます。
結構いろいろと変更があるものなんですね。
Posted at by setomits
200年分くらいをJSONにして、CDNに置いて皆で使うってのはどうですかね?
Posted at by かばしま
確かにそれは名案ですね。
ちょっと考えます。
Posted at by setomits
未だ来年の即位関連の休日が出揃ってない(立法の動きが無い)です。
年内に決まれば良いですけど、もしかすると、元号と一緒で「1ヶ月前に決定」に
なる可能性もあります。

他に、「海の日」を五輪で動かした見返りに7月20日に戻すという
約束が出来ているとか、いないとか・・・
これも1~2年の内に動きがあるでしょう。
Posted at by AddinBox(角田)