日付時刻関数 date-time
日時関数を使用すると、Journey Optimizer 内の値に対して日時操作を実行できます。
now() 関数は、パーソナライゼーションエディターでは使用できません。 現在の日時の値には、代わりに getCurrentZonedDateTime() または currentTimeInMillis() を使用します。 詳細情報日数を追加 add-days
addDays 関数は、増分に正の値を使用し、減分に負の値を使用して、指定された日付を指定された日数で調整します。
構文
{%= addDays(date, number) %}
- 入力:
{%= addDays(stringToDate("2024-11-01T17:19:51Z"),10) %} - 出力:
2024-11-11T17:19:51Z
時間数を追加 add-hours
addHours 関数は、増分に正の値を使用し、減分に負の値を使用して、指定された日付を指定された時間数で調整します。
構文
{%= addHours(date, number) %}
- 入力:
{%= addHours(stringToDate("2024-11-01T17:19:51Z"),1) %} - 出力:
2024-11-01T18:19:51Z
分数を追加 add-minutes
addMinutes 関数は、増分に正の値を使用し、減分に負の値を使用して、指定された日付を指定された分数で調整します。
構文
{%= addMinutes(date, number) %}
- 入力:
{%= addMinutes(stringToDate("2024-11-01T17:59:51Z"),10) %} - 出力:
2024-11-01T18:09:51Z
月数を追加 add-months
addMonths 関数は、増分に正の値を使用し、減分に負の値を使用して、指定された日付を指定された月数で調整します。
構文
{%= addMonths(date, number) %}
- 入力:
{%= addMonths(stringToDate("2024-11-01T17:19:51Z"),2) %} - 出力:
2025-01-01T17:19:51Z
秒数を追加 add-seconds
addSeconds 関数は、増分に正の値を使用し、減分に負の値を使用して、指定された日付を指定された秒数で調整します。
構文
{%= addSeconds(date, number) %}
- 入力:
{%= addSeconds(stringToDate("2024-11-01T17:19:51Z"),10) %} - 出力:
2024-11-01T17:20:01Z
年数を追加 add-years
addYears 関数は、増分に正の値を使用し、減分に負の値を使用して、指定された日付を指定された年数で調整します。
構文
{%= addYears(date, number) %}
- 入力:
{%= addYears(stringToDate("2024-11-01T17:19:51Z"),2) %} - 出力:
2026-11-01T17:19:51Z
経過時間 age
age 関数を使用すると、指定された日付からの経過時間を取得できます。
構文
{%= age(datetime) %}
日数 age-days
ageInDays 関数は、指定された日付を日数で、つまり指定された日付と現在の日付の間の経過日数を計算します。将来の日付の場合は負の数、過去の日付の場合は正の数になります。
構文
{%= ageInDays(date) %}
currentDate = 2025-01-07T12:17:10.720122+05:30(アジア/コルカタ)
- 入力:
{%= ageInDays(stringToDate("2025-01-01T17:19:51Z"))%} - 出力:
5
月数 age-months
ageInMonths 関数は、指定された日付を月数で、つまり指定された日付と現在の日付の間の経過月数を計算します。将来の日付の場合は負の数、過去の日付の場合は正の数になります。
構文
{%= ageInMonths(date) %}
currentDate = 2025-01-07T12:22:46.993748+05:30(アジア/コルカタ)
- 入力:
{%=ageInMonths(stringToDate("2024-01-01T00:00:00Z"))%} - 出力:
12
日付を比較 compare-dates
compareDates 関数は、最初の入力日付を他の入力日付と比較します。 date1 が date2 と等しい場合は 0 を返し、date1 が date2 より前の場合は -1 を返し、date1 が date2 より後の場合は 1 を返します。
構文
{%= compareDates(date1, date2) %}
- 入力:
{%=compareDates(stringToDate("2024-12-02T00:00:00Z"), stringToDate("2024-12-03T00:00:00Z"))%} - 出力:
-1
ZonedDateTime を変換 convert-zoned-date-time
convertZonedDateTime 関数は、日時を指定されたタイムゾーンに変換します。
構文
{%= convertZonedDateTime(dateTime, timezone) %}
- 入力:
{%=convertZonedDateTime(stringToDate("2019-02-19T08:09:00Z"), "Asia/Tehran")%} - 出力:
2019-02-19T11:39+03:30[Asia/Tehran]
現在の時刻(ミリ秒) current-time
currentTimeInMillis 関数を使用すると、現在の時刻をエポックミリ秒単位で取得できます。
構文
{%= currentTimeInMillis() %}
日数の差異 date-diff
dateDiff 関数を使用すると、2 つの日付間の差異を日数単位で取得できます。
構文
{%= dateDiff(datetime,datetime) %}
次の操作は、今日からプロファイルに保存されている将来の日付(サブスクリプション終了日やイベント日など)までの日数を返します。
| code language-sql |
|---|
|
dateDiffを使用して、メールの件名またはコンテンツの動的カウントダウンを構築します。
| code language-handlebars |
|---|
|
出力(例): Your points expire in 7 days — use them before they're gone!
ある月の日付 day-month
dayOfMonth は、その月の日付を表す数値を返します。
構文
{%= dayOfMonth(datetime) %}
- 入力:
{%= dayOfMonth(stringToDate("2024-11-05T17:19:51Z")) %} - 出力:
5
曜日 day-week
dayOfWeek 関数を使用すると、曜日を取得できます。 ISO-8601規格に従って、1 (月曜日)から7 (日曜日)までの整数を返します。
構文
{%= dayOfWeek(datetime) %}
メールやコンテンツでこの機能を利用して、日に応じてメッセージを適応させます。 PQLの比較演算子は=です(==ではなく1と等しい):
| code language-handlebars |
|---|
|
| table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2 | |
|---|---|
| Day | 返された値 |
| 月曜日 | 1 |
| 火曜日 | 2 |
| 水曜日 | 3 |
| 木曜日 | 4 |
| 金曜日 | 5 |
| 土曜日 | 6 |
| 日曜日 | 7 |
dayOfWeek()は、コンテンツのパーソナライゼーション用に設計されています(例:日に基づいてメール本文テキストを適応させる)。 週の曜日に基づいてジャーニーでプロファイルを異なる方法で ルーティングする必要がある場合(待機アクティビティの週末をスキップするなど)、ジャーニーの条件アクティビティで直接利用可能な組み込みの時間条件→曜日 オプションを使用します。 詳細情報年間通算日 day-year
dayOfYear 関数を使用すると、通日(1月1日からの通算日数)を取得できます。
構文
{%= dayOfYear(datetime) %}
- 入力:
{%= dayOfYear(stringToDate("2024-03-15T00:00:00Z")) %} - 出力:
75
秒数の差異 diff-seconds
diffInSeconds 関数は、秒数単位で 2 つの日付間の差異を返します。
構文
{%= diffInSeconds(endDate, startDate) %}
- 入力:
{%=diffInSeconds(stringToDate("2024-11-01T17:19:51Z"), stringToDate("2024-11-01T17:19:01Z"))%} - 出力:
50
時間数を抽出 extract-hours
extractHours 関数は、指定されたタイムスタンプから時間コンポーネントを抽出します。
構文
{%= extractHours(date) %}
- 入力:
{%= extractHours(stringToDate("2024-11-01T17:19:51Z"))%} - 出力:
17
分数を抽出 extract-minutes
extractMinutes 関数は、指定されたタイムスタンプから分コンポーネントを抽出します。
構文
{%= extractMinutes(date) %}
- 入力:
{%= extractMinutes(stringToDate("2024-11-01T17:19:51Z"))%} - 出力:
19
extractHoursとextractMinutesを組み合わせて、日付、日、年を指定せずに時間部分だけをレンダリングします。
| code language-handlebars |
|---|
|
出力(例): Your appointment is confirmed for 14:05.
先頭のゼロガード ({%#if m < 10%}0{%/if%})は、10分を下回る分を2桁で表示します(例:9ではなく09)。
月数を抽出 extract-months
extractMonth 関数は、指定されたタイムスタンプから月コンポーネントを抽出します。
構文
{%= extractMonths(date) %}
- 入力:
{%=extractMonth(stringToDate("2024-11-01T17:19:51Z"))%} - 出力:
11
秒数を抽出 extract-seconds
extractSeconds 関数は、指定されたタイムスタンプから秒コンポーネントを抽出します。
構文
{%= extractSeconds(date) %}
- 入力:
{%=extractSeconds(stringToDate("2024-11-01T17:19:51Z"))%} - 出力:
51
日付を書式設定 format-date
formatDate 関数を使用すると、日時値を書式設定できます。 書式は、有効な Java DateTimeFormat パターンである必要があります。
構文
{%= formatDate(datetime, format) %}
最初のパラメーターは日付時刻属性で、2番目の値は日付を変換して表示する方法です。
formatDate関数には、文字列ではなく入力として 日時フィールドタイプ が必要です。 フィールドがXDM スキーマの文字列型として保存されている場合は、最初にstringToDate()やtoDateTime()などの変換関数を使用して日時に変換する必要があります。 以下の例を参照してください。例
次の操作では、日時フィールドをMM/DD/YY形式にフォーマットします。
| code language-sql |
|---|
|
フィールドが文字列として保存されている場合は、最初にstringToDate()を使用して日時に変換してから書式設定する必要があります。
| code language-sql |
|---|
|
次の操作は、日名、月名、日年を含む完全な日付形式を返します。
| code language-sql |
|---|
|
出力:Wednesday January 01 2020
現在のシステム時間をフォーマットして、動的な日付を生成できます。 次の操作は、現在の日付をMM/dd/YYYY形式で返します。
| code language-sql |
|---|
|
出力(2026年1月30日): 01/30/2026
曜日を短い形式で抽出できます。
| code language-sql |
|---|
|
出力:Sun (日曜日)、Mon (月曜日)、Tue (火曜日)など
小文字の出力の場合は、lowerCase関数と組み合わせます。
| code language-sql |
|---|
|
出力:sun、mon、tueなど
ジャーニーイベントコンテキスト属性からタイムスタンプを使用する場合、次の2つの要件が適用されます。
- タイムスタンプを
toDateTime()で折り返します – コンテキストイベントタイムスタンプは、formatDate()によって日時の値として自動的に認識されません。 - 数値イベント IDをバックティックで折り返します – イベント IDが数値(例:
1697323153)の場合、エクスプレッション パスでバックティックを使用してエスケープする必要があります。そうしないと、エディターでPQL構文エラーが発生します。 - 使用
{% let %}または{%= %}構文 – 結果を{% let %}の変数に割り当てて{{varName}}でレンダリングするか、インライン{%= %}構文を直接使用できます。
| code language-handlebars |
|---|
|
出力(例): 18/03/2026 14:30
{%= formatDate(...) %})でformatDate()を使用すると発生します。 最も一般的な原因は、バックティック (`)でラップされていない数値イベント ID、またはtoDateTime()で最初にラップせずにformatDate()に直接渡されたタイムスタンプフィールドです。 両方の問題を修正するには、上記の例に示す{% let %}割り当てパターンを使用します。`パターン文字 pattern-characters
一部のパターン文字は類似しているように見えても、異なる概念を表す場合があります。
2023-12-31T10:15:30Z の場合)y2023Y2024(2023年12月31日(PT)は 2024年の最初の週であるので)MJan、January のようなテキスト)12 または Decm15d31D365日付をロケールサポートの形式にします format-date-locale
formatDate 関数は、日付と時刻の値を、目的のロケールなどの対応する言語に依存する表現にフォーマットするのに使用できます。 書式は、有効な Java DateTimeFormat パターンである必要があります。
構文
{%= formatDate(datetime, format, locale) %}
最初の文字列は日付の属性で、2 番目の値はどのように日付を変換して表示するか、3 番目の値は文字列形式のロケールを表します。
例
次の操作を実行すると、MM/dd/YY 形式(ロケール:FRANCE)で日付が返されます。
{%= formatDate(profile.timeSeriesEvents._mobile.hotelBookingDetails.bookingDate, "MM/dd/YY", "fr_FR") %}
CurrentZonedDateTime を取得 get-current-zoned-date-time
getCurrentZonedDateTime 関数は、タイムゾーン情報を含む現在の日時を返します。
構文
{%= getCurrentZonedDateTime() %}
- 入力:
{%= getCurrentZonedDateTime() %} - 出力:
2024-12-06T17:22:02.281067+05:30[Asia/Kolkata]
時間数の差異 hours-difference
diffInHours 関数は、時間数単位で 2 つの日付間の差異を返します。
構文
{%= diffInHours(endDate, startDate) %}
- 入力:
{%= diffInHours(stringToDate("2024-11-01T17:19:51Z"), stringToDate("2024-11-01T07:19:51Z"))%} - 出力:
10
分数の差異 diff-minutes
diffInMinutes 関数を使用すると、分数単位で 2 つの日付間の差異を返すことができます。
構文
{%= diffInMinutes(endDate, startDate) %}
- 入力:
{%= diffInMinutes(stringToDate("2024-11-01T17:19:51Z"), stringToDate("2024-11-01T16:19:51Z"))%} - 出力:
60
月数の差異 months-difference
diffInMonths 関数は、月数単位で 2 つの日付間の差異を返します
構文
{%= diffInMonths(endDate, startDate) %}
- 入力:
{%=diffInMonths(stringToDate("2024-11-01T17:19:51Z"), stringToDate("2024-08-01T17:19:51Z"))%} - 出力:
3
日数を設定 set-days
setDays 関数を使用すると、指定された日時の日付を設定できます。
構文
{%= setDays(datetime, day) %}
月の日付を1日に設定します。
- 入力:
{%= setDays(stringToDate("2024-11-15T17:19:51Z"), 1) %} - 出力:
2024-11-01T17:19:51Z
時間を設定 set-hours
setHours 関数を使用すると、日時の時を設定できます。
構文
{%= setHours(datetime, hour) %}
- 入力:
{%= setHours(stringToDate("2024-11-01T17:19:51Z"), 0) %} - 出力:
2024-11-01T00:19:51Z
プロファイルに保存されている日付(サブスクリプションの有効期限など)のX日前にプロファイルをターゲットにするには、負の値のaddDaysを使用します。
| code language-sql |
|---|
|
時間を固定時間(例:午前9時)に標準化するには、setHoursと組み合わせます。
| code language-sql |
|---|
|
終了時刻 to-date-time
ToDateTime 関数は、文字列を日付に変換します。 無効な入力に対する出力として、エポック日付を返します。
構文
{%= toDateTime(string, string) %}
- 入力:
{%=toDateTime("2024-11-01T17:19:51Z")%} - 出力:
2024-11-01T17:19:51Z
UTC に to-utc
toUTC 関数を使用すると、日時を UTC に変換できます。
構文
{%= toUTC(datetime) %}
日の先頭に切り捨てる truncate-day
truncateToStartOfDay 関数を使用すると、指定された日時を、その日の始まり(時刻:00:00)に設定して変更できます。
構文
{%= truncateToStartOfDay(date) %}
- 入力:
{%= truncateToStartOfDay(stringToDate("2024-11-01T17:19:51Z")) %} - 出力:
2024-11-01T00:00Z
truncateToStartOfQuarter truncate-quarter
truncateToStartOfQuarter 関数を使用すると、日時を四半期の最初の日(例:1月1日、4月1日、7月1日、10月1日)の 00:00 に切り捨てることができます。
構文
{%= truncateToStartOfQuarter(dateTime) %}
- 入力:
{%=truncateToStartOfQuarter(stringToDate("2024-11-01T17:19:51Z"))%} - 出力:
2024-10-01T00:00Z
truncateToStartOfWeek truncate-week
truncateToStartOfWeek 関数は、指定された日時を、週の始まり(月曜日の 00:00)に設定して変更します。
構文
{%= truncateToStartOfWeek(dateTime) %}
- 入力:
{%= truncateToStartOfWeek(stringToDate("2024-11-19T17:19:51Z"))%} // tuesday - 出力:
2024-11-18T00:00Z // monday
truncateToStartOfYear truncate-year
truncateToStartOfYear 関数を使用すると、指定された日時を、年の最初の日(1月1日)の 00:00 に切り捨てて変更できます。
構文
{%= truncateToStartOfYear(dateTime) %}
- 入力:
{%=truncateToStartOfYear(stringToDate("2024-11-01T17:19:51Z"))%} - 出力:
2024-01-01T00:00Z
年間通算週 week-of-year
weekOfYear 関数を使用すると、年の週番号(何週目か)を取得できます。
構文
{%= weekOfYear(datetime) %}
- 入力:
{%= weekOfYear(stringToDate("2024-11-01T17:19:51Z")) %} - 出力:
44
年数の差異 diff-years
diffInYears 関数を使用すると、年数単位で 2 つの日付間の差異を返すことができます。
構文
{%= diffInYears(endDate, startDate) %}: int
- 入力:
{%=diffInYears(stringToDate("2024-11-01T17:19:51Z"), stringToDate("2019-10-01T17:19:51Z"))%} - 出力:
5