Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

ユリウス歴における特定の日の曜日をメモ用紙規模の計算で求める方法

ユリウス歴における特定の日の曜日をメモ用紙規模の計算で求める方法です。
...といっても、或る程度のマジックナンバー頼みになってしまうのですが(

たとえば、1912年5月12日の場合1900年代のマジックナンバー0を適用し

['sun','mon','tue','wed','thu','fri','sat'][(12 + [0,3,3,6,1,4,6,2,5,0,3,5][4] + 12 + (12 / 4) + 0) % 7]
=> "sun"

2020年7月24日(東京五輪開会式!)の場合は2000年代のマジックナンバー6を与えて

['sun','mon','tue','wed','thu','fri','sat'][(24 + [0,3,3,6,1,4,6,2,5,0,3,5][6] + 20 + (20 / 4) + 6) % 7]
=> "fri"

となります。
なんらかの事情でdateライブラリが使えない等々の場合は重宝するかも...しれません(無責任

定数頼みでない方法としてはZeller’s algorithm等々があるようです。
が、今回紹介した方法の方が圧倒的に早いですね。