アカウント/連絡先で顧客の詳細を追跡することは、顧客関係管理 (CRM) において非常に重要です。日付に基づいて、購入、見積もり、サービスなどのすべてのプロセスが発生します。 Salesforce で文字列から日付を作成し、日付を文字列に変換する方法を見てみましょう。このチュートリアルの一部として、日、年、月などを追加するなど、書式設定された日付に適用されるメソッドについても例を挙げて説明します。
Apex 日付クラス
Date クラスは、プリミティブなすべての日付メソッドをサポートしています。 「システム」名前空間を使用します。このクラスの valueOf() メソッドを使用して、文字列を日付形式に変換できます。日付をフォーマットした後、この日付クラスでも使用できるいくつかのメソッドを使用して、このフォーマットされた日付に日、月、年などを追加するいくつかのメソッドを適用します。
まず、Salesforce Apex で valueOf() メソッドを使用して文字列を日付に変換する方法を確認します。
Date.valueOf()
Apex の valueOf() は、指定された文字列を日付形式に変換する引数として文字列を受け取る「Date」クラスで使用できます。入力文字列 (パラメーター) には、年、月、日の 3 つの属性が含まれます。これら 3 つすべてが結合/連結され、メソッドに渡されます。
構文: ValueOf()
すでに述べたように、「Date」クラスの変数を宣言し、文字列を渡す必要があります。
日付 date_variable= date.valueOf(string_date_format);
例:
ステップ1:
「年月日」を保持する文字列を用意しましょう。
// 年月日を1つずつ宣言文字列 年 = '2023';
文字列月 = '4';
文字列日 = '5';
// それらをすべて連結して 1 つの文字列にする
文字列 string_type = 年 + '-' + 月 + '-' + 日;
system.debug(string_type);
出力:
ステップ2:
次に、Apex の「Date」クラスの valueOf() メソッドを使用して、前の「Date」文字列を「Date」に変換します。
// 文字列の日付を日付に変換日付 convert_date = date.valueOf(string_type);
system.debug(converted_date);
出力:
「Date」に変換すると、自動的に日付が DateTime 形式で返されることがわかります。これらを valueOf() メソッドに渡しても、時間 (時:分:秒) は考慮されません。返される形式は YYYY-MM-DD HH:MM:SS です。
日付を文字列に変換する
「日付」を「文字列」に変換する方法は 2 つあります。 Apex でサポートされている 1 つの方法は、format() メソッドを使用することです。もう 1 つの方法は、「日付」属性 (年、月、日) を手動で抽出し、それらを文字列に連結することです。それらを1つずつ見てみましょう。
1.フォーマット()
format() メソッドは、Apex の「Date」クラスで使用でき、「Date」を「M/D/YYYY」形式の文字列に変換します。指定した形式をパラメーターとしてこのメソッドに渡すこともできます。指定した形式がデフォルトの形式です。
構文:
input_date.format(“format_type”)例:
前の例を考えて、format() メソッドを使用して「日付」を「文字列」に変換してみましょう。 format() メソッドに特定のフォーマットは提供していません。
// 年月日を1つずつ宣言文字列 年 = '2023';
文字列月 = '4';
文字列日 = '5';
// それらをすべて連結して 1 つの文字列にする
文字列 string_type = 年 + '-' + 月 + '-' + 日;
// 文字列の日付を日付に変換
日付 convert_date = date.valueOf(string_type);
system.debug(converted_date);
// フォーマット()
system.debug(converted_date.format());
出力:
2. 日付クラス メソッドの使用
このシナリオでは、Apex の「Date」クラスで使用可能なメソッドを使用して、「Date」から年月日を個別に抽出します。次に、これら 3 つを連結して、「日付」を「文字列」形式で返します。
- 日() – このメソッドは、「日付」から日付を抽出するために使用されます。日付を指定する整数を返します。
- 月() – このメソッドは、「日付」から月を抽出するために使用されます。月番号を指定する整数を返します。 1 月を 1、2 月を 2… と呼ぶことができます。 12月12日。
- 年() – このメソッドは、「日付」から年を抽出するために使用されます。年を 4 桁の形式で返します。
構文:
input_date.year() + '-' + input_date.month() + '-' + input_date.day()例:
「日付」を「YYYY-M-D」形式の「文字列」に戻します。
// 年月日を1つずつ宣言文字列年 = '2023';
文字列月 = '4';
文字列日 = '5';
// それらをすべて連結して 1 つの文字列にする
文字列 string_type = 年 + '-' + 月 + '-' + 日;
// 文字列の日付を日付に変換
日付 convert_date = date.valueOf(string_type);
system.debug(converted_date);
// 日付を文字列に変換
system.debug(converted_date.year() + '-' + convert_date.month() + '-' + convert_date.day());
出力:
実際の例:
Salesforce オブジェクトの既存の日付に日、年、月を追加するなど、「日付」を更新する方法を見てみましょう。 3 つのメソッドはすべて、「n」整数を引数として取ります。
1. addDays()
既存の日付に日数を追加するために、Apex は「Date」クラスで使用できる addDays() メソッドをサポートしています。
2. addMonths()
既存の日付に月を追加するために、Apex は「Date」クラスで使用できる addMonths() メソッドをサポートしています。
3. addYears()
既存の日付に年を追加するために、Apex は「Date」クラスで使用できる addYears() メソッドをサポートしています。
構文:
これら 3 つのメソッドの構文を見てみましょう。ここで、「n」は整数値を指定します。
- input_Date.addDays(n)
- input_Date.addMonths(n)
- input_Date.addYears(n)
例に進む前に、次のことを考慮してください。
- Salesforce にログインし、「アプリケーション ランチャー」に移動して、タブで「キャンペーン」を検索します。ここでは、「キャンペーン名」と「終了日」を挿入します。
- 「キャンペーン」を選択し、「新規」をクリックします。
- データをキャンペーンに挿入するためのポップアップが表示されます。 「キャンペーン名」の下に「Linuxヒント投稿」を追加し、「終了日」を2023年4月5日に設定します。次に、「保存」をクリックします。
レコードの準備が整いました。 (Type – Conference と Status – Planned が自動的に表示されます。そのままにしておきます)。開発者コンソールで匿名ウィンドウを開きましょう。
例 1:
addDays() メソッドを使用して、「Campaign」オブジェクトの既存の「End Date」に 10 日を追加してみましょう。
- これを行うには、まず SOQL クエリを使用して「Campaign」オブジェクトからレコードを取得し、このレコードを「List」オブジェクトに保存する必要があります。
- 次に、「for」ループを使用してリストを繰り返し、addDays() メソッドを使用して「終了日」に 10 日を追加します。
- 最後に、「update DML」ステートメントを使用して、「キャンペーン」オブジェクトの「終了日」を更新します。
List
// addDays() メソッドを使用して、EndDate に 10 日を追加します
for(キャンペーン i: クエリ 1){
i.EndDate = i.EndDate.addDays(10);
}
// update DML を使用して EndDate を更新します
クエリ 1 を更新します。
system.debug(クエリ1);
出力:
以前の「終了日」は 4 月 5 日です。これに 10 日を追加すると、「終了日」は 4 月 15 日になります。
「キャンペーン」タブでも確認できます。戻ってページを更新します。 「終了日」が更新されていることがわかります。
例 2:
addMonths() メソッドを使用して、既存の「終了日」に 3 か月を追加してみましょう。
// SOQL を使用してキャンペーンから Name と EndDate を返すList
system.debug('Actual:'+query1);
// addMonths() メソッドを使用して EndDate に 3 か月を加算します
for(キャンペーン i: クエリ 1){
i.EndDate = i.EndDate.addMonths(3);
}
// update DML を使用して EndDate を更新します
クエリ 1 を更新します。
system.debug('Updated: '+query1);
出力:
「終了日」の前月は 4 月です。 3ヶ月足して7月になりました。
例 3:
addYears() メソッドを使用して、既存の「終了日」に 3 年を追加してみましょう。
// SOQL を使用してキャンペーンから Name と EndDate を返すList
system.debug('Actual:'+query1);
// addYears() メソッドを使用して、EndDate に 3 年を追加します
for(キャンペーン i: クエリ 1){
i.EndDate = i.EndDate.addYears(3);
}
// update DML を使用して EndDate を更新します
クエリ 1 を更新します。
system.debug('Updated: '+query1);
出力:
「終了日」に 3 年を追加すると、更新された年は 2026 年になります。
結論
Salesforce Apex での日付の書式設定は非常に簡単です。このチュートリアルの一環として、Apex の「Date」クラスで使用できる valueOf() メソッドを使用して、「Date」を「String」形式から「Date」に変換する方法を学びました。日付を文字列に戻したい場合は、format() および day()、month()、year() などの日付属性を使用します。最後に、Salesforce の「キャンペーン」オブジェクトで addDays()、addMonths()、および addYears() メソッドを使用して「終了日」を更新する DML 操作について、個別の例とともに説明して、このガイドを終了しました。