Apexで日付の曜日を判定する最も簡単な方法


日付が「月曜日」や「金曜日」など、どの曜日に該当するのかを確認する機能は、日付データを操作する際によく必要になります。この記事では、Apexの`Datetime.format()`メソッドを使用した簡単で効果的な曜日の取得方法を紹介します。


`Datetime.format()`を使った曜日の取得方法

`Datetime.format()`メソッドを使うと、日付をさまざまなフォーマットで出力できます。`EEEE`というフォーマット文字列を使用することで、対象の日付の曜日を文字列として取得可能です。


コード例:曜日を取得する

以下のコードは、現在の日付から曜日を取得する基本的な例です。

  1. public class DateUtils {
  2. // 日付から曜日を取得するメソッド
  3. public static String getDayOfWeek(Date date) {
  4. // DateをDatetimeに変換し、フォーマットで曜日を取得
  5. Datetime datetime = (Datetime)date;
  6. return datetime.format('EEEE', 'ja'); // 'ja'を指定して日本語の曜日を取得
  7. }
  8. }
  9.  
  10. // 使用例
  11. Date today = System.today(); // 本日の日付
  12. String dayOfWeek = DateUtils.getDayOfWeek(today);
  13. System.debug('今日の日付: ' + today + ' は ' + dayOfWeek);

テストコード例

以下のテストコードは、さまざまな日付で曜日が正しく取得されるかを確認します。

  1. @IsTest
  2. public class DateUtilsTest {
  3. @IsTest
  4. public static void testGetDayOfWeek() {
  5. // 例: 2024年12月16日は月曜日
  6. Date testDate = Date.newInstance(2024, 12, 16); // 月曜日
  7. String dayOfWeek = DateUtils.getDayOfWeek(testDate);
  8. System.assertEquals('月曜日', dayOfWeek);
  9.  
  10. // 他の日付のテスト
  11. System.assertEquals('水曜日', DateUtils.getDayOfWeek(Date.newInstance(2024, 12, 18))); // 水曜日
  12. System.assertEquals('土曜日', DateUtils.getDayOfWeek(Date.newInstance(2024, 12, 21))); // 土曜日
  13. }
  14. }

このアプローチのメリット

  1. シンプルで直感的

    • `Datetime.format()`を活用することで、余計な計算を省略し、直接曜日を取得できます。
  2. ロケールに対応可能

    • 第2引数でロケール(例: `'ja'`)を指定することで、日本語や英語など、希望する言語で曜日を取得できます。
  3. メンテナンス性が高い

    • 計算式を利用する方法よりも、可読性が高く、メンテナンスが容易です。

応用例

  1. 営業日の判定

    1. public static Boolean isWeekday(Date date) {
    2. String dayOfWeek = getDayOfWeek(date);
    3. return !dayOfWeek.equals('土曜日') && !dayOfWeek.equals('日曜日');
    4. }
  2. 曜日ごとのスケジュール管理

    1. public static void processTaskByDay(Date date) {
    2. String dayOfWeek = getDayOfWeek(date);
    3. switch on dayOfWeek {
    4. when '月曜日' {
    5. System.debug('週初めのタスクを処理します。');
    6. }
    7. when '金曜日' {
    8. System.debug('週末の準備を開始します。');
    9. }
    10. when else {
    11. System.debug('通常業務を行います。');
    12. }
    13. }
    14. }

まとめ

Apexで日付の曜日を取得するには、`Datetime.format()`メソッドを使うのが最も簡単かつ効果的です。この方法は、計算を用いる方法に比べてコードが直感的でわかりやすく、保守性にも優れています。

コメント