🤖

ツェラーの公式を使ったタイムスタンプ

2024/02/25に公開

./go_straight/unit/timestamp.py

# ...

        if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
            if month == 2:
                calc = ((365 * year + year / 4 - year / 100 + year / 400 +
                         (306 * (month + 1)) / 10 + day) - 426) % 7
            elif month == 11:
                calc = ((365 * year + year / 4 - year / 100 + year / 400 +
                         (306 * (month + 1)) / 10 + day) - 427) % 7
            else:
                calc = ((365 * year + year / 4 - year / 100 + year / 400 +
                         (306 * (month + 1)) / 10 + day) - 428) % 7
        else:
            calc = (year + year / 4 - year / 100 + year / 400 +
                    (13 * month + 8) / 5 + day) % 7

# ...

go_straight、テスト実行時タイムスタンプとして使いました。

公式がしっかりしていれば、多言語でも曜日判定プログラムとして使えます。私は他に、C#/Javaでも実装しました。うるう計算もしてあるので、かなり有用です。コード例は一部にします。全体がみたいとき、標準ライブラリを使っているので、Python3で動作します。日本語だと文字化けするようなテキストエディタを使っているので、英語で出力することにしました。その方が、世界共通語で理解しやすいと想います。

GitHubで編集を提案

Discussion