はじめに
JavaScriptで日付を扱う際、曜日の取得や操作は頻繁に必要となります。しかし、実装時に具体的な書き方を思い出せないことも多いものです。本記事では、JavaScriptでの曜日の取得・操作方法を、初学者から実践者まで分かりやすく解説します。
JavaScriptで曜日を取得する方法
Date
オブジェクトを使う
JavaScriptでは、Date
オブジェクトを使って曜日を取得できます。
const today = new Date(); // 現在の日付を取得
const dayOfWeek = today.getDay(); // 曜日を数値で取得(0:日曜日, 1:月曜日, ... 6:土曜日)
console.log(dayOfWeek);
上記のコードを実行すると、曜日が 0
から 6
の数値として返されます。
曜日を文字列で取得する
数値だけでは分かりづらいため、曜日名を配列で対応させる方法が一般的です。
const days = ["日", "月", "火", "水", "木", "金", "土"];
const today = new Date();
const dayOfWeek = today.getDay();
console.log(`今日は${days[dayOfWeek]}曜日です`);
このコードを実行すると、「今日は月曜日です」のように表示されます。
指定した日付の曜日を取得する
特定の日付の曜日を調べるには、Date
オブジェクトに日付を指定します。
const targetDate = new Date("2024-12-25"); // クリスマスの日付を設定
const dayOfWeek = targetDate.getDay();
const days = ["日", "月", "火", "水", "木", "金", "土"];
console.log(`2024年12月25日は${days[dayOfWeek]}曜日です`);
日付を加算・減算して曜日を取得する
Date
オブジェクトのsetDate()
メソッドを使うと、日付の加算・減算ができます。
const today = new Date();
const days = ["日", "月", "火", "水", "木", "金", "土"];
// 3日後の曜日を取得
const futureDate = new Date();
futureDate.setDate(today.getDate() + 3);
console.log(`3日後は${days[futureDate.getDay()]}曜日です`);
// 7日前の曜日を取得
const pastDate = new Date();
pastDate.setDate(today.getDate() - 7);
console.log(`1週間前は${days[pastDate.getDay()]}曜日です`);
Intl.DateTimeFormat
を使った曜日の取得
Intl.DateTimeFormat
を使うと、ロケールに応じた形式で曜日を取得できます。
const today = new Date();
const formatter = new Intl.DateTimeFormat('ja-JP', { weekday: 'long' });
console.log(formatter.format(today));
このコードを実行すると、「日曜日」「月曜日」などのフル表記で曜日が表示されます。
曜日を英語で取得する方法
英語での曜日表示には、配列を使うかIntl.DateTimeFormat
を利用します。
const daysEn = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
const today = new Date();
console.log(`Today is ${daysEn[today.getDay()]}`);
または、Intl.DateTimeFormat
を使う方法もあります。
const formatter = new Intl.DateTimeFormat('en-US', { weekday: 'long' });
console.log(formatter.format(new Date()));
曜日を動的に変更する方法
特定の曜日を求める処理、例えば「次の金曜日の日付を取得する」場合は、次のように実装できます。
function getNextDayOfWeek(date, dayOfWeek) {
const resultDate = new Date(date);
resultDate.setDate(date.getDate() + ((dayOfWeek + 7 - date.getDay()) % 7 || 7));
return resultDate;
}
const today = new Date();
const nextFriday = getNextDayOfWeek(today, 5); // 5: 金曜日
console.log(`次の金曜日は ${nextFriday.toLocaleDateString()} です`);
moment.js
を使った曜日取得(※非推奨)
かつてはmoment.js
がよく使用されていましたが、現在は推奨されていません。ただし、使用する場合の曜日取得方法は以下の通りです。
const moment = require('moment');
console.log(moment().format('dddd')); // 英語の曜日
console.log(moment().locale('ja').format('dddd')); // 日本語の曜日
▼moment.js
https://momentjs.com/
Day.js
を使った曜日取得
moment.js
の代替として人気のDay.js
を使用する方法もあります。
const dayjs = require('dayjs');
require('dayjs/locale/ja');
dayjs.locale('ja');
console.log(dayjs().format('dddd')); // 日本語の曜日
console.log(dayjs().locale('en').format('dddd')); // 英語の曜日
▼Day .js
https://day.js.org/
まとめ
JavaScriptでの曜日の扱い方を紹介しました。
getDay()
で曜日を数値取得(0:日曜日~6:土曜日)- 配列を使って日本語や英語の曜日を取得
Intl.DateTimeFormat
でロケール対応した曜日を取得setDate()
を使って曜日を加算・減算- 次の特定の曜日の日付を求める関数を実装
JavaScriptで曜日を扱う基本をしっかり理解しましょう!