日期函式 date-functions
日期函式可讓您在歷程運算式中控制和使用日期和時間值。 這些功能對於客戶歷程中以時間為基礎的條件、排程和時間計算至關重要。
有以下需求時,請使用日期函式:
- 取得目前時間或具有特定時區處理的日期(now,nowWithDelta,currentTimeInMillis)
- 檢查日期是否落在特定時間範圍內(inLastDays,inLastHours,inLastMonths,inLastYears,inNextDays,inNextHours,inNextMonths,inNextYears)
- 修改日期和時間元件(setHours, setDays, updateTimeZone)
- 執行以時間為基礎的計算和比較
- 在不同時間格式和表示之間轉換
日期函式可精確控制暫時邏輯,讓您建立對時間敏感的歷程路徑和條件,以回應特定時間範圍和排程。
now()等某些函式。 了解更多currentTimeInMillis currentTimeInMillis
傳回目前時間(以Epoch毫秒為單位)。
currentTimeInMillis()currentTimeInMillis()
傳回整數。
currentTimeInMillis()
傳回「1544712617131」。
inLastDays inLastDays
如果指定的dateTime介於現在與現在 — 差異天數之間,則傳回true。
inLastDays(<dateTime>,<delta>)| table 0-row-2 1-row-2 2-row-2 | |
|---|---|
| 參數 | 類型 |
| 日期時間 | dateTime |
| delta | 整數 |
inLastDays(<dateTime>,<integer>)
傳回布林值。
inLastDays(toDateTime('2023-12-12T01:11:00Z'), 4)
傳回true。
inLastHours inLastHours
如果指定的日期時間介於現在和現在之間 — 差異小時,則傳回true。
inLastHours(<dateTime>,<delta>)| table 0-row-2 1-row-2 2-row-2 | |
|---|---|
| 參數 | 類型 |
| 日期時間 | dateTime |
| delta | 整數 |
inLastHours(<dateTime>,<integer>)
傳回布林值。
inLastHours(toDateTime('2023-12-12T01:11:00Z'), 4)
傳回true。
inLastHours(@event{MyEvent.timestamp}, 4)
傳回true。
inLastMonths inLastMonths
如果指定的日期或dateTime介於現在和現在 — 差異月份之間,則傳回true。
inLastMonths(<dateTime>,<delta>)| table 0-row-2 1-row-2 2-row-2 | |
|---|---|
| 參數 | 類型 |
| 日期時間 | dateTime |
| delta | 整數 |
inLastMonths(<dateTime>,<integer>)
傳回布林值。
inLastMonths(toDateTime('2023-12-12T01:11:00Z'), 4)
傳回true。
inLastYears inLastYears
如果指定的日期或dateTime介於現在和現在之間 — 差異年份,則傳回true。
inLastYears(<dateTime>,<delta>)| table 0-row-2 1-row-2 2-row-2 | |
|---|---|
| 參數 | 類型 |
| 日期時間 | dateTime |
| delta | 整數 |
inLastYears(<dateTime>,<integer>)
傳回布林值。
inLastYears(toDateTime('2023-12-12T01:11:00Z'), 4)
傳回true。
inNextDays inNextDays
如果指定的日期或日期時間介於現在和現在+差異天數之間,則傳回true。
inNextDays(<dateTime>,<delta>)| table 0-row-2 1-row-2 2-row-2 | |
|---|---|
| 參數 | 類型 |
| 日期時間 | dateTime |
| delta | 整數 |
inNextDays(<dateTime>,<integer>)
傳回布林值。
inNextDays(toDateTime('2023-12-12T01:11:00Z'), 4)
傳回true。
inNextHours inNextHours
如果指定的日期或日期時間介於現在和現在+差異小時之間,則傳回true。
inNextHours(<dateTime>,<delta>)| table 0-row-2 1-row-2 2-row-2 | |
|---|---|
| 參數 | 類型 |
| 日期時間 | dateTime |
| delta | 整數 |
inNextHours(<dateTime>,<integer>)
傳回布林值。
inNextHours(toDateTime('2023-12-12T01:11:00Z'), 4)
傳回true。
inNextMonths inNextMonths
如果指定的日期或dateTime介於現在和現在+差異月份之間,則傳回true。
inNextMonths(<dateTime>,<delta>)| table 0-row-2 1-row-2 2-row-2 | |
|---|---|
| 參數 | 類型 |
| 日期時間 | dateTime |
| delta | 整數 |
inNextMonths(<dateTime>,<integer>)
傳回布林值。
inNextMonths(toDateTime('2023-01-12T01:11:00Z'), 4)
傳回true。
inNextYears inNextYears
如果指定的日期或dateTime介於現在和現在+差異年度之間,則傳回true。
inNextYears(<dateTime>,<delta>)| table 0-row-2 1-row-2 2-row-2 | |
|---|---|
| 參數 | 類型 |
| 日期時間 | dateTime |
| delta | 整數 |
inNextYears(<dateTime>,<integer>)
傳回布林值。
inNextYears(toDateTime('2021-12-12T01:11:00Z'), 4)
傳回true。
now now
以日期時間格式傳回目前日期。 如需資料型別的詳細資訊,請參閱此頁面。
getCurrentZonedDateTime()。 了解更多now(<parameter>)| table 0-row-2 1-row-2 | |
|---|---|
| 參數 | 說明 |
| 字串 | 時區識別碼(選擇性) |
now()
now("<timeZone id>")
傳回日期時間。
now()
傳回2023-06-03T06:30Z。
toString(now())
傳回「2023-06-03T06:30Z」
now("Europe/Paris")
傳回2023-06-03T08:30+02:00。
nowWithDelta nowWithDelta
傳回包含位移的目前日期時間。 如果指定了時區識別碼,則會套用時區位移。 如需資料型別的詳細資訊,請參閱此頁面。
nowWithDelta(<parameters>)| table 0-row-2 1-row-2 2-row-2 3-row-2 | |
|---|---|
| 參數 | 說明 |
| delta | 正或負整數值 |
| 日期部分 | 年、月、日、小時、分鐘或秒做為字串 |
| 時區id | 時區值的字串表示法。 如需詳細資訊,請參閱資料型別。 時區ID必須是字串常數。 它不能是欄位參考或運算式。 |
nowWithDelta(<delta>,<date part>
nowWithDelta(<delta>,<date part>,"<timeZone id>")
傳回日期時間。
nowWithDelta(-2, "hours")
nowWithDelta(-2, "hours", "Europe/Paris")
傳回2小時前的dateTime。
nowWithDelta(1, "months", "Asia/Tokyo")
在2026-01-31評估時,傳回2026-02-28T…;在2026-05-31評估時,傳回2026-06-30T…
nowWithDelta()使用行事曆月算術。 如果目標月份的天數少於當月當月,則結果會標準化為該月的最後一個有效日。 函式不會捲動至下個月。
setHours setHours
僅設定日期時間或日期時間的小時。 例如,如果您要等到明天的特定小時,則可以強制該小時。
setHours(<parameter>)| table 0-row-2 1-row-2 2-row-2 3-row-2 | |
|---|---|
| 參數 | 類型 |
| 日期時間 | dateTime |
| 不考慮時區的日期時間 | dateTimeOnly |
| 小時 | 整數 |
setHours(<dateTime>,<hours>)
傳回日期時間。
setHours(<dateTimeOnly>,<hours>)
傳回日期時間,不考慮時區。
setHours(toDateTime('2023-12-12T01:11:00Z'), 4)
傳回2023-12-12T04:11:00Z。
setHours(nowWithDelta(1, "days"), 20)
傳回明天晚上8:XY,XY是目前時間評估的分鐘數。 如果評估發生在上午2:45,則傳回的時間將會是晚上8:45。
setDays setDays
僅設定日期時間或日期時間的日期。 例如,如果您要等到月份的某一天,則可以強制該天。
setDays(<parameter>)| table 0-row-2 1-row-2 2-row-2 3-row-2 | |
|---|---|
| 參數 | 類型 |
| 日期時間 | dateTime |
| 不考慮時區的日期時間 | dateTimeOnly |
| 天 | 整數 |
setDays(<dateTime>,<days>)
傳回日期時間。
setDays(<dateTimeOnly>,<days>)
傳回日期時間,不考慮時區。
setDays(toDateTime('2023-12-12T01:11:00Z'), 25)
傳回2023-12-25T01:11:00Z。
setDays(toDateTimeOnly(@event{MyEvent.registrationDate}), 1)
updateTimeZone updateTimeZone
傳回新的日期時間,而在同一時間傳回新的時區。
updateTimeZone(<parameters>)- 時區id:字串
- dateTime
updateTimeZone(<dateTime>,<timeZone id>)
傳回日期時間。
updateTimeZone( toDateTime("2023-08-28T08:15:30.123-07:00"), "Europe/Paris"))
傳回2023-08-28T17:15:30.123+02:00。
updateTimeZone(@event{MyExpEvent.timestamp}, "Australia/Sydney")
如果時間戳記欄位的值為2021-11-16T16:55:12.939318+01:00,則函式會傳回2021-11-17T02:55:12.942115+11:00。
本節包含結構化知識,用於支援與本主題相關的解譯、擷取和問答。
如需完整瞭解,此資訊應結合本頁的檔案。 兩者皆非獨立來源;頁面說明功能,本節提供額外內容,以協助去除術語、意圖、適用性和限制條件的歧義。
- TL;DR:此頁面會記錄AJO歷程運算式中可用的所有日期和時間函式,包括如何取得目前時間、檢查日期是否在相對時間範圍內,以及修改日期/時間元件。
意圖:
- 使用
now或nowWithDelta取得目前的日期時間(含選擇性的時區) - 使用
currentTimeInMillis以epoch整數擷取目前時間 - 使用
inLastDays、inLastHours、inLastMonths、inLastYears檢查日期時間在過去N天、小時、月或年之內 - 使用
inNextDays、inNextHours、inNextMonths、inNextYears檢查日期時間在接下來的N天、小時、月或年之內 - 使用
setHours或setDays,在日期時間值上強制指定一小時或當月某日 - 將日期時間轉換為不同的時區,同時使用
updateTimeZone保留相同的瞬間
字彙表:
- dateTime:包含時區位移資訊 (產品專用) 的日期時間值
- dateTimeOnly:沒有時區資訊的日期時間值(產品特定)
- 紀元毫秒:代表自1970-01-01T00:00:00Z以來經過的毫秒數的整數
- 差異:整數位移(正數或負數),與
nowWithDelta搭配使用,將目前時間移動數年、月、日、小時、分鐘或秒
護欄:
now()僅在歷程運算式中可用;對於電子郵件個人化,請使用getCurrentZonedDateTime()nowWithDelta中的時區ID必須是字串常數 — 不支援欄位參考和動態運算式updateTimeZone中的時區識別碼必須是字串常數
術語:
- 正式名稱:日期函式 — 首字母縮寫:none — 變體:日期時間函式,暫時函式
- 同義字: “now()” = “current datetime”; “currentTimeInMillis()” = “current epoch milliseconds”
- 請勿混淆:「inLastDays」(回顧時間)≠「inNextDays」(回顧時間)
- 請勿混淆:「setHours」(取代hour元件)≠「nowWithDelta」(位移目前時間)
- 請勿混淆:「updateTimeZone」(相同的即時、不同時區表示)≠「setHours」(變更時間值本身)
常見問題集:
- 問:我可以在電子郵件個人化內容中使用
now()嗎? — 否,now()僅在歷程運算式中可用。 使用getCurrentZonedDateTime()進行電子郵件個人化。 - 問:如何檢查事件是否發生在過去24小時內? — 使用
inLastHours(@event{MyEvent.timestamp}, 24)。 - 問:如何取得過去2小時內的目前時間位移? — 使用
nowWithDelta(-2, "hours")。 - 問:
updateTimeZone與setHours有何不同之處? —updateTimeZone保持相同的即時時間,但以不同的時區表示,而setHours實際上會變更datetime值的小時元件。 - 問:
nowWithDelta中的時區引數可以是設定檔欄位嗎? — 否,時區ID必須是字串常數;不支援欄位參考。 - 問:
nowWithDelta()搭配月份使用,而目前日期是月底日期時,會發生什麼情況? — 此函式使用行事曆月份算術,並將結果標準化為目標月份的最後一個有效日。 例如,新增1個月至1月31日會傳回2月28日(而不是3月3日)。