- リンクを取得
- ×
- メール
- 他のアプリ
- リンクを取得
- ×
- メール
- 他のアプリ
日付が「月曜日」や「金曜日」など、どの曜日に該当するのかを確認する機能は、日付データを操作する際によく必要になります。この記事では、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()`メソッドを使うのが最も簡単かつ効果的です。この方法は、計算を用いる方法に比べてコードが直感的でわかりやすく、保守性にも優れています。
コメント
コメントを投稿