- リンクを取得
- ×
- メール
- 他のアプリ
- リンクを取得
- ×
- メール
- 他のアプリ
日付が「月曜日」や「金曜日」など、どの曜日に該当するのかを確認する機能は、日付データを操作する際によく必要になります。この記事では、Apexの`Datetime.format()`メソッドを使用した簡単で効果的な曜日の取得方法を紹介します。
`Datetime.format()`を使った曜日の取得方法
`Datetime.format()`メソッドを使うと、日付をさまざまなフォーマットで出力できます。`EEEE`というフォーマット文字列を使用することで、対象の日付の曜日を文字列として取得可能です。
コード例:曜日を取得する
以下のコードは、現在の日付から曜日を取得する基本的な例です。
public class DateUtils { // 日付から曜日を取得するメソッド public static String getDayOfWeek(Date date) { // DateをDatetimeに変換し、フォーマットで曜日を取得 Datetime datetime = (Datetime)date; return datetime.format('EEEE', 'ja'); // 'ja'を指定して日本語の曜日を取得 } } // 使用例 Date today = System.today(); // 本日の日付 String dayOfWeek = DateUtils.getDayOfWeek(today); System.debug('今日の日付: ' + today + ' は ' + dayOfWeek);
テストコード例
以下のテストコードは、さまざまな日付で曜日が正しく取得されるかを確認します。
@IsTest public class DateUtilsTest { @IsTest public static void testGetDayOfWeek() { // 例: 2024年12月16日は月曜日 Date testDate = Date.newInstance(2024, 12, 16); // 月曜日 String dayOfWeek = DateUtils.getDayOfWeek(testDate); System.assertEquals('月曜日', dayOfWeek); // 他の日付のテスト System.assertEquals('水曜日', DateUtils.getDayOfWeek(Date.newInstance(2024, 12, 18))); // 水曜日 System.assertEquals('土曜日', DateUtils.getDayOfWeek(Date.newInstance(2024, 12, 21))); // 土曜日 } }
このアプローチのメリット
シンプルで直感的
- `Datetime.format()`を活用することで、余計な計算を省略し、直接曜日を取得できます。
ロケールに対応可能
- 第2引数でロケール(例: `'ja'`)を指定することで、日本語や英語など、希望する言語で曜日を取得できます。
メンテナンス性が高い
- 計算式を利用する方法よりも、可読性が高く、メンテナンスが容易です。
応用例
営業日の判定
public static Boolean isWeekday(Date date) { String dayOfWeek = getDayOfWeek(date); return !dayOfWeek.equals('土曜日') && !dayOfWeek.equals('日曜日'); }
曜日ごとのスケジュール管理
public static void processTaskByDay(Date date) { String dayOfWeek = getDayOfWeek(date); switch on dayOfWeek { when '月曜日' { System.debug('週初めのタスクを処理します。'); } when '金曜日' { System.debug('週末の準備を開始します。'); } when else { System.debug('通常業務を行います。'); } } }
まとめ
Apexで日付の曜日を取得するには、`Datetime.format()`メソッドを使うのが最も簡単かつ効果的です。この方法は、計算を用いる方法に比べてコードが直感的でわかりやすく、保守性にも優れています。
コメント
コメントを投稿