曜日計算
計算結果
曜日
- 年初からの日数
- 262 日
- 年末までの残り日数
- 103 日
- ISO週番号
- 38
日付が決まれば、曜日も決まります。2026年9月19日はどの国でも土曜日で、時計をどう合わせても変わりません。ところが、その日付をローカルのタイムゾーン経由で変換する実装は、一部の利用者にだけ静かに前日を返します。このページは1つの日付から4つの数を返します。曜日、その年の年初からの日数、年末までの残り日数、そしてISO週番号です。驚かれるのは最後のISO週番号で、ISOの週は月曜日ではなく木曜日を含む年に属するため、1月の日付が前の年の第53週になることがあります。
公式
曜日 = (1970年1月1日からの通算日数 + 4) mod 7(0が日曜日)。年初からの日数はその年の日付の位置、年末までの残り日数はその年の日数からそれを引いたもの、ISO週番号はその年の最初の木曜日を含む週を1とする
- 通算日数
- 1970年1月1日からの通算日数。この日が木曜日なので、式の定数は4になります
- 年初からの日数
- その年の1月1日を1としたときの、この日付の位置
- 年末までの残り日数
- その年の日数(365または366)から年初からの日数を引いたもの
- ISO週番号
- その年の最初の木曜日を含む週を1とし、1から53まで数えた週番号
日付を確定させたいとき、スケジュール表が要求する週番号を知りたいとき、その年がどこまで残っているかを見たいときに使います。曜日は簡単なほうで、道具によって答えが割れるのは週番号のほうです。ISOの週はその木曜日を含む年に属するので、2021年1月1日は2020年の第53週を返します。このツールができないのは暦の変換です。ここでの日付はすべて先発グレゴリオ暦で、1582年より前の日付も歴史家が使うこの暦で数えており、1582年10月に消えた10日間は起きたことになっていません。
計算例
2026年9月19日
- 1970年1月1日からの通算日数は20,715日。4日のオフセットを足すと20,719で、20,719 mod 7 = 6。0が日曜日なので土曜日
- 年初からの日数は、経過した8か月が31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 = 243日で、243 + 19 = 262
- 年末までの残り日数は、2026年が365日の平年なので365 − 262 = 103
- ISO週番号は、その週の月曜日が2026年9月14日で、ISO年の第38週に入る
1つの日付から4つの答えが出ます。曜日は手元の紙のカレンダーで確かめられますが、道具ごとに食い違うのは週番号のほうです。週が始まる日ではなく、木曜日で所属する年が決まるからです。
2021年1月1日 — 1月の日付が第53週になる例
- 2021年1月1日は金曜日なので、この日を含む週は2020年12月28日(月曜日)から2021年1月3日(日曜日)まで
- ISOの週はその木曜日を含む年に属し、その木曜日は2020年12月31日
- したがってこの週は2020年の最後の番号である53を取る。2021年の日付が前の年の週番号を返す
- 年初からの日数と年末までの残り日数はこれと無関係で、暦年の中で数えるので1と364
週番号をこのページに載せる理由がこの境界です。2020年は53週、2021年は52週で、2021年1月の最初の3日間は前の年の勘定に入ります。
2024年2月29日 — うるう日
- 2024年は4で割り切れ、100では割り切れないので、うるう年で2月は29日ある
- 年初からの日数は、1月の31日と29日で60。2023年にはこの日付が存在せず、3月1日が60番目に入る
- 年末までの残り日数は366 − 60 = 306
- 曜日は木曜日で、その週の月曜日は2月26日
うるう日はそれ以降の位置をすべて1つずらすので、平年のカレンダーからは読み取れない出力が年初からの日数です。
適用限界
ここでの日付はすべて先発グレゴリオ暦です。実際に使われていた暦ではなく、遡って当てはめた暦なので、1582年10月に空白はなく、西暦1000年の曜日はどの年代記にも書かれていない曜日になります。週番号はISOのもので、週は月曜日に始まり、その木曜日を含む年に属します。日曜日に週が始まり第1週を1月の中に置く米国の流儀とは、毎年いくつかの日付で食い違います。タイムゾーンの変換はここにはありません。日付の曜日はタイムゾーンに依存しないからです。
よくある質問
- ある日付の曜日はどうやって求めるのか
- 基準になる日からの通算日数を数え、7で割った余りを取ります。1970年1月1日は木曜日なので、20,715日後の日付は20,715 + 4 = 20,719、20,719 mod 7 = 6となり土曜日です。計算を避けるカレンダーの裏技も、実際には同じ数え方をしています。
- ISO週番号とは何か
- ISO 8601の番号付けです。週は月曜日に始まり、第1週はその年の最初の木曜日を含む週になります。この規則があるおかげで、どの週もちょうど1つの年に結び付きます。1月上旬の日付が前の年の第52週や第53週になるのはそのためです。ヨーロッパの多くと、スケジュール管理のソフトウェアの多くがこの番号付けを使っています。
- 1月の日付が第53週になるのはなぜか
- ISOの週が、その月曜日ではなく木曜日を含む年に属するからです。2021年1月1日の週は2020年12月28日(月曜日)から2021年1月3日(日曜日)までで、木曜日が2020年に落ちるので、2020年の最後の番号である53を取りました。反対側も同じです。2026年12月31日は木曜日なので、2026年の第53週に入ります。
- 時刻やタイムゾーンで答えは変わるのか
- いいえ。暦の日付にはどこで読んでも曜日があり、このツールはローカルのタイムゾーンを経由しません。本当に問題になるのは、ローカル時刻のメソッドで日付を組み立ててから曜日を読み戻す実装です。それは計算した機械より西側の利用者にだけ前日を返します。
- 年初からの日数は何に使うのか
- その日付が、その暦年の中で何番目かを表す数です。1月1日が1、12月31日が365か366になります。通日は業界によって納期の書き方で、たとえば2026年の262日目は9月19日です。年末までの残り日数はその年の日数からこの位置を引いただけなので、この2つを足すと必ずその年の日数になります。うるう日がある年は、その日数が366になるだけです。
参考文献
- UTS #35: Unicode Locale Data Markup Language, Part 4: Dates — Unicode Consortium
- ISO 8601: International Standard Date and Time Notation — Markus Kuhn, University of Cambridge