calculate / date
経過日数・週数計算
指定した日付が年間何日目か、残り日数、ISO 8601週番号、シンプル週番号、年間進捗を計算します。うるう年にも対応しています。
経過日数
75日目
/ 365日
残り日数
290日
平年
曜日
月曜日
シンプル週番号
第11週
Math.ceil(dayOfYear / 7)
ISO週番号
W12
2026年
年間進捗20.5%
使い方
01- 日付欄に
yyyy-mm-dd形式で日付を入力します - 「今日」ボタンをクリックすると本日の日付が自動入力されます
- 経過日数・残り日数・曜日・週番号・年間進捗バーが即座に表示されます
実装コード
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, /* ... */ }
}よくある使用例・注意点
03ISO 8601 週番号とシンプル週番号の違い
ISO週番号は「その年の第1木曜日を含む週が第1週」というルール。年末年始では前後の年の週番号になることがあります。シンプル週番号は Math.ceil(経過日数 / 7) の単純計算です。
うるう年の影響
うるう年(4年に一度、ただし100の倍数は除く、400の倍数は含む)は366日あります。2月29日以降の日付は平年より経過日数が1多くなります。
年間進捗バー
バーは経過日数/年間日数の割合を視覚化します。プロジェクト計画や目標管理の際に、年間のどの位置にいるかを直感的に把握できます。
関連ツール
04ソースコード
05このツールのソースコード(テストコードを含む)はGitHubで公開しています。MITライセンスで自由に利用・改変できます。
GitHub でコードを見る →