calculate / date

経過日数・週数計算

指定した日付が年間何日目か、残り日数、ISO 8601週番号、シンプル週番号、年間進捗を計算します。うるう年にも対応しています。

経過日数
75日目
/ 365日
残り日数
290日
平年
曜日
月曜日
シンプル週番号
第11週
Math.ceil(dayOfYear / 7)
ISO週番号
W12
2026年
年間進捗20.5%

使い方

01
  1. 日付欄に yyyy-mm-dd 形式で日付を入力します
  2. 「今日」ボタンをクリックすると本日の日付が自動入力されます
  3. 経過日数・残り日数・曜日・週番号・年間進捗バーが即座に表示されます

実装コード

02

年初からのミリ秒差分を日数に変換して経過日数を算出します。ISO週番号はその年の第1木曜日を含む週を第1週とするルールで計算します。

export function isLeapYear(year: number): boolean {
  return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0
}

export function getDayOfYear(year: number, month: number, day: number): DayOfYearResult {
  const date = new Date(year, month - 1, day)
  const startOfYear = new Date(year, 0, 1)
  const dayOfYear = Math.round(
    (date.getTime() - startOfYear.getTime()) / (24 * 60 * 60 * 1000)
  ) + 1
  const totalDays = isLeapYear(year) ? 366 : 365
  // ISO週番号は第1木曜日を含む週が第1週
  const { isoWeek, isoYear } = getISOWeek(year, month, day)
  return { dayOfYear, remaining: totalDays - dayOfYear, /* ... */ }
}

よくある使用例・注意点

03
ISO 8601 週番号とシンプル週番号の違い
ISO週番号は「その年の第1木曜日を含む週が第1週」というルール。年末年始では前後の年の週番号になることがあります。シンプル週番号は Math.ceil(経過日数 / 7) の単純計算です。
うるう年の影響
うるう年(4年に一度、ただし100の倍数は除く、400の倍数は含む)は366日あります。2月29日以降の日付は平年より経過日数が1多くなります。
年間進捗バー
バーは経過日数/年間日数の割合を視覚化します。プロジェクト計画や目標管理の際に、年間のどの位置にいるかを直感的に把握できます。

関連ツール

04
日本の祝日計算営業日計算UNIXタイム変換

ソースコード

05

このツールのソースコード(テストコードを含む)はGitHubで公開しています。MITライセンスで自由に利用・改変できます。

GitHub でコードを見る →