曜日計算・年月日からISO曜日番号を求める

曜日計算・年月日からISO曜日番号を求める

1600年から9999年の正規グレゴリオ暦日を入力し、月曜日=1から日曜日=7までのISO曜日番号、通算日、月長を計算します。

入力

1600年から9999年までの西暦年を整数で入力します。

1から12までの月番号です。日数は年と月と組み合わせて確認します。

1から31までの日を入力します。2月29日や月末は正規グレゴリオ暦で検証します。

使い方

  1. 曜日を調べたい日付の年・月・日を入力します。
  2. 計算ボタンを押し、ISO曜日番号を確認します。
  3. 1=月、2=火、3=水、4=木、5=金、6=土、7=日の対応を使って曜日名へ読み替えます。

計算式・考え方

1600-01-01を通算日0、ISO土曜日番号6とし、入力日の通算日Sに対して曜日番号=((S+5) mod 7)+1とします。余りは0〜6なので、結果は必ず1〜7になります。

注意事項

  • 曜日名の代わりに数値を返すのは、schema v3のscalar結果形状を保ちつつ、表計算やプログラムで再利用しやすくするためです。「週末か」は番号が6または7かで判定でき、「月曜日を1とする」という規約もデータと一緒に明示できます。日本語の曜日名が必要な場合は結果ラベルの対応表で読み替えてください。
  • JavaScriptのDate系APIは、文字列の解釈、ローカル時刻とUTC、0〜99の年の特別扱い、タイムゾーンによる日付のずれなどを注意する必要があります。本ページは年・月・日の整数だけで独立した暦計算を行い、現在の端末設定によって同じ入力の曜日が変わらないようにしています。
  • 検算例として、1600-01-01はISO番号6の土曜日、1970-01-01は4の木曜日、2000-01-01は6の土曜日、2024-02-29は4の木曜日です。400年間の日数は146,097日で7で割り切れるため、正規グレゴリオ暦の曜日配置は400年周期で繰り返します。
  • 曜日だけで営業日や祝日は決まりません。日曜日でも営業する組織や、平日に国民の祝日が置かれる場合があり、祝日規則自体も国・地域・年で変わります。本ページは暦上の7曜日だけを計算し、営業可否や登校日などを断定しません。
  • うるう年規則は米国海軍天文台USNOのLeap Years(aa.usno.navy.milの公式FAQ)とNISTのLeap Seconds FAQs(nist.govのTime and Frequency Division)を2026年7月13日に確認しました。4で割り切れる年を原則とし、100で割り切れる年を除き、400で割り切れる年を戻す規則です。
  • 日付の表現はISO 8601-1:2019公式ページ(iso.org、standard 70907)とISOの『ISO 8601 — Date and time format』解説を2026年7月13日に確認し、本文ではYYYY-MM-DDの年・月・日の順を使います。入力欄は可読性のため別々にしていますが、年月日の意味はこの順序で固定です。
  • ISO曜日番号は月曜日=1、火曜日=2、水曜日=3、木曜日=4、金曜日=5、土曜日=6、日曜日=7です。無償で参照できるIETF RFC 3339(datatracker.ietf.orgの公式HTML)のdate-wday定義と照合しました。JavaScriptのDate.getDayが採る日曜日=0の規約とは番号が異なるため、転記時は規約名も残してください。
  • 対応範囲は1600-01-01から9999-12-31までです。この間を、1582年の導入や各地域の採用日による日付の飛びを入れないproleptic Gregorian(過去にも規則を連続適用する正規グレゴリオ暦)として扱います。歴史資料の当時の現地暦、ユリウス暦、改暦時に削除された日を再現するツールではありません。
  • 「1日」は連続する暦日の境界を1つ進む意味で、86,400秒の実時間をタイムゾーン上で加算する意味ではありません。時刻、UTCオフセット、サマータイム、うるう秒は入力に持たず、年月日だけを扱います。時刻間隔が必要な予約、運行、ログ解析では、IANAタイムゾーンを扱える専用ライブラリを使ってください。
  • 内部では1600-01-01を0とする整数通算日へ変換し、差、加算、減算を行います。年を365日ずつ数え、4年、100年、400年ごとの補正を整数除算で加減するため、ブラウザのローカル時刻解釈や、1970年起点のミリ秒値に依存しません。通算日からの逆変換も同じ月長で確認します。
  • 年・月・日はすべて整数に限定します。2月30日、4月31日、平年の2月29日など、個々の欄の上限だけでは検出できない組合せは、計算前の日付制約で拒否します。計算後の通算日が範囲外に出る場合も結果を丸めたり循環させたりせず、入力エラーとしてfail-closedに停止します。
  • すべての式は許可制の式ASTと有界な日付関数だけで実行し、文字列をコードとして実行しません。eval、new Function、外部API、CDN、fetch、XHR、WebSocketは使用せず、Pythonのビルド時評価とJavaScriptのブラウザ評価で同じ整数結果になることをテストします。
  • 結果を他システムと照合するときは、暦法、年の範囲、曜日番号、開始日と終了日の包含、日付の引き算の向きを合わせてください。数字が一致しない場合は、時差や丸めよりも先に、片方が終了日を数えているか、日曜日を0としていないか、歴史上の現地暦を使っていないかを確認すると切り分けやすくなります。
  • 正規グレゴリオ暦の日付専用計算です。歴史上の現地暦、時刻、時差、法的期限の特則は個別に確認してください。

よくある質問

日曜日は0ではないのですか?

本ページはISO規約で月曜日=1、日曜日=7です。JavaScriptのgetDayの日曜日=0とは異なります。

時差で曜日が変わりますか?

この入力は時刻のない暦日なのでタイムゾーンに依存しません。同一瞬間の現地日付を求める問題は別です。

歴史上の日付の曜日に使えますか?

1600年以降の規則上の正規グレゴリオ暦曜日です。当時の地域が使った暦と異なる可能性は個別に確認してください。

入力した年月日と日数・週数は、利用者の端末内だけで計算されます。サーバーや第三者へ送信・保存せず、氏名、予約内容、住所などの個人情報を入力する欄もありません。