Temporal functions
Temporal functionsは、日付、時刻、時点、期間を読み取り、計算し、相互に移動します。これは標準ライブラリで最大のカテゴリです。また、1日ずれるレポート、年に2回1時間遅れて発火するSLA、システム境界を越えると変わる日付など、統合バグが最も発生しやすい場所でもあります。
機能の提供状況
WELは現在、一部のお客様にご利用いただけます。ご利用のワークスペースで利用可能かどうかを確認するには、Customer Success Representativeにお問い合わせください。
最初に適切な型を選択する
ほとんどの時間関連バグは、関数の選択ではなく型の選択によるものです。 WELは時点とウォールクロックの表示を分離し、この分離によって典型的なエラーを防ぎます。
| タイプ | ユースケース | リテラル |
|---|---|---|
日時 | 作成、出荷、ログ記録など、イベントの特定の時刻をタイムゾーン付きで記録します。 | DateTime('2026-03-15T09:30:00Z') |
PlainDate | 請求日、生年月日、契約開始日など、見る人全員に同じタイムゾーンなしのカレンダー日付を記録します。 | PlainDate('2026-03-15') |
PlainTime | 店舗の開店時刻や日次締め時刻など、日付が付属せずタイムゾーンもない時刻を記録します。 | PlainTime('09:30:00') |
PlainDateTime | ソースシステムがゾーンを別途提供して送信するローカル時刻など、タイムゾーンが判明する前のウォールクロックの表示を記録します。 | PlainDateTime('2026-03-15T09:30:00') |
実行時間 | 年齢、2つのイベント間の経過間隔、タイムアウトなど、時間の長さを記録します。 | Duration('PT2H30M') |
タイムゾーンを無視するにはPlainDateを使用する
同じ時点でも、タイムゾーンによって日付が異なる場合があります。たとえば、2026-03-15T00:00:00Zは東京では15日の午前9時、ロサンゼルスでは14日の午後5時です。
PlainDateにはタイムゾーンがないため、すべてのユーザーに同じ日付として読み取られます。請求書の日付をPlainDateではなくDateTimeとして保存することは、1日ずれのエラーが発生する最も一般的な原因です。
NOW()はステップ全体で固定されます
now()は、1つのTransform Dataステップ内では、何度呼び出してもどこでも同じ時点を返します。式は途中で時計が進むのを認識できないため、now()から計算された2つのフィールドは常に互いに整合します。
コンポーネントを読み取る
これらはPlainDate、DateTime、またはPlainDateTimeを受け取り、その一部を返します。
year
年を返します。
year(value)| パラメーター | 説明 |
|---|---|
| value | PlainDate、DateTime、またはPlainDateTime。 |
カレンダー日付から年を返す
次の例は、カレンダー日付から年を返します。
Formula
year(PlainDate('2026-03-15'))出力
2026month
月を1から12の数値として返します。
month(value)| パラメーター | 説明 |
|---|---|
| value | PlainDate、DateTime、またはPlainDateTime。 |
カレンダー日付から月番号を返す
次の例は、カレンダー日付から月番号を返します。
Formula
month(PlainDate('2026-03-15'))出力
3day
月の日を1から31で返します。
day(value)| パラメーター | 説明 |
|---|---|
| value | PlainDate、DateTime、またはPlainDateTime。 |
カレンダー日付から月の日を返す
次の例は、カレンダー日付から月の日を返します。
Formula
day(PlainDate('2026-03-15'))出力
15quarter
カレンダー四半期を1から4で返します。
quarter(value)| パラメーター | 説明 |
|---|---|
| value | PlainDate、DateTime、またはPlainDateTime。 |
日付からカレンダー四半期を返す
次の例は、日付からカレンダー四半期を返します。
Formula
quarter(PlainDate('2026-03-15'))出力
1day_of_year
年の日を1から366で返します。
day_of_year(value)| パラメーター | 説明 |
|---|---|
| value | PlainDate、DateTime、またはPlainDateTime。 |
年内の日番号を返す
次の例は、年内の日番号を返します。
Formula
day_of_year(PlainDate('2026-03-15'))出力
74day_of_week
曜日を1から7で返します。1はロケールの週の最初の日です。
そのため、この数値はロケールに依存します。同じ日付でも、週が日曜日に始まる場所では1、月曜日に始まる場所では7になります。数値が宛先システムに入る場合は、day_of_week_nameとの明示的な比較を優先するか、レシピのロケールを確認してください。
day_of_week(value)| パラメーター | 説明 |
|---|---|
| value | PlainDate、DateTime、またはPlainDateTime。 |
曜日をロケール依存の数値として返す
次の例は、曜日をロケール依存の数値として返します。
Formula
day_of_week(PlainDate('2026-03-15'))出力
1day_of_week_name
曜日のローカライズされた名前を返します。
day_of_week_name(value)| パラメーター | 説明 |
|---|---|
| value | PlainDate、DateTime、またはPlainDateTime。 |
曜日のローカライズされた名前を返す
次の例は、曜日のローカライズされた名前を返します。
Formula
day_of_week_name(PlainDate('2026-03-15'))出力
日曜日month_name
月のローカライズされた名前を返します。
month_name(value)| パラメーター | 説明 |
|---|---|
| value | PlainDate、DateTime、またはPlainDateTime。 |
月のローカライズされた名前を返す
次の例は、月のローカライズされた名前を返します。
Formula
month_name(PlainDate('2026-03-15'))出力
Marchhour
時を0から23で返します。
hour(value)| パラメーター | 説明 |
|---|---|
| value | DateTime、PlainDateTime、またはPlainTime。 |
タイムスタンプから時を返す
次の例は、タイムスタンプから時を返します。
Formula
hour(DateTime('2026-03-15T09:30:45Z'))出力
9minute
分を0から59で返します。
minute(value)| パラメーター | 説明 |
|---|---|
| value | DateTime、PlainDateTime、またはPlainTime。 |
タイムスタンプから分を返す
次の例は、タイムスタンプから分を返します。
Formula
minute(DateTime('2026-03-15T09:30:45Z'))出力
30second
秒をDecimalとして返すため、小数精度が保持されます。
second(value)| パラメーター | 説明 |
|---|---|
| value | DateTime、PlainDateTime、またはPlainTime。 |
タイムスタンプから秒を返す
次の例は、タイムスタンプから秒を返します。
Formula
second(DateTime('2026-03-15T09:30:45Z'))出力
45time
ウォールクロック時刻をPlainTimeとして返します。タイムゾーン引数を指定すると、代わりにそのゾーンのローカル時刻を返します。
time(datetime, timezone)| パラメーター | 説明 |
|---|---|
| datetime | DateTimeまたはPlainDateTime。 |
| timezone | 任意のIANAタイムゾーン名。 |
タイムゾーンを指定せずにウォールクロック時刻を返す
次の例は、タイムゾーンを指定せずにウォールクロック時刻を返します。
Formula
time(DateTime('2026-03-15T09:30:45Z'))出力
09:30:45東京で読み取られるウォールクロック時刻を返す
次の例は、東京で読み取られるウォールクロック時刻を返します。
Formula
time(DateTime('2026-03-15T09:30:45Z'), 'Asia/Tokyo')出力
18:30:45to_map
Durationを含む任意の時間値を、そのコンポーネントのマップに分解します。
to_map(value)| パラメーター | 説明 |
|---|---|
| value | PlainDate、DateTime、PlainDateTime、PlainTime、またはDuration。 |
カレンダー日付をコンポーネントに分解する
次の例は、カレンダー日付をコンポーネントに分解します。
Formula
to_map(PlainDate('2026-03-15'))出力
{year: 2026, month: 3, day: 15}期間をコンポーネントに分解する
次の例は、期間をコンポーネントに分解します。
Formula
to_map(Duration('PT2H30M'))出力
{hours: 2, minutes: 30, seconds: 0}カレンダー演算
カレンダー上の1か月と30日は同じ増分ではありません。その違いは月末に現れます。これら2つの関数は、そのケースを異なる方法で処理します。
add_months
指定した月数を追加し、対象月の日数が少ない場合は月末にクランプします。 ExcelのEDATE関数と同等です。
1月31日に1か月を足すと、2月28日、うるう年では2月29日になります。ビジネスルールが「翌月の同じ日付、存在しない場合は最終日」を意味する場合に使用します。これはほとんどの請求およびサブスクリプションルールを表します。
add_months(date, months)| パラメーター | 説明 |
|---|---|
| date | 進めるPlainDate。 |
| months | 追加する月数。負の値は、代わりに日付を後ろに移動します。 |
短い月の最終日にクランプする
次の例は、短い月の最終日にクランプします。
Formula
add_months(PlainDate('2026-01-31'), 1)出力
2026-02-28負の月数値で日付を後ろに移動する
次の例は、負の月数を使用して日付を後ろに移動します。
Formula
add_months(PlainDate('2026-03-15'), -2)出力
2026-01-15advance_date
PlainDateを年、月、日の任意の組み合わせで進めます。
advance_dateは、add_monthsとは異なり、結果が実在する日付にならない場合にクランプせずエラーを発生させます。不可能な日付が入力の誤りを意味し、日を黙って移動するよりもジョブを失敗させたい場合に使用します。
advance_date(date, delta)| パラメーター | 説明 |
|---|---|
| date | 進めるPlainDate。 |
| delta | years、months、daysのいずれかを含むマップ。認識されないキーはE222を発生させます。 |
日数で日付を進める
次の例は、日数で日付を進めます。
Formula
advance_date(PlainDate('2026-03-15'), {days: 10})出力
2026-03-25年と月をまとめて日付を進める
次の例は、年と月をまとめて日付を進めます。
Formula
advance_date(PlainDate('2026-03-15'), {years: 1, months: 2})出力
2027-05-15date_diff
2つの日付間の差を年、月、日に分解します。
date_diffは最初の日付から2番目の日付までを測定するため、2番目の日付が早い場合は負のコンポーネントになります。
date_diff(from, to)| パラメーター | 説明 |
|---|---|
| from | 開始PlainDate。 |
| to | 終了PlainDate。 |
早い日付から遅い日付までの差を測定する
次の例は、早い日付から遅い日付までの差を測定します。
Formula
date_diff(PlainDate('2025-01-10'), PlainDate('2026-03-15'))出力
{years: 1, months: 2, days: 5}遅い日付から早い日付までの差を測定する
次の例は、遅い日付から早い日付までの差を測定し、負のコンポーネントを返します。
Formula
date_diff(PlainDate('2026-03-15'), PlainDate('2025-01-10'))出力
{years: -1, months: -2, days: -5}advance_datetime
指定されたタイムゾーンで、DateTimeを年、月、日、時、分、秒で進めます。
advance_datetime(datetime, delta, timezone, on_gap, on_fold)| パラメーター | 説明 |
|---|---|
| datetime | 進めるDateTime。 |
| delta | years、months、days、hours、minutes、secondsのいずれかを含むマップ。認識されないキーはE222を発生させます。 |
| timezone | カレンダー演算を実行する任意のIANAタイムゾーン。 |
| on_gap | 任意です。夏時間の変更でスキップされたローカル時刻を解決する方法。 |
| on_fold | 任意です。夏時間の変更で繰り返されたローカル時刻を解決する方法。 |
日時を時間単位で進める
次の例は、日時を時間単位で進めます。
Formula
advance_datetime(DateTime('2026-03-15T09:30:00Z'), {hours: 5})出力
2026-03-15T14:30:00Z期間演算
次の関数は、ISO 8601期間をDateTimeに加算または減算します。
datetime_add_duration
ISO 8601文字列として記述された期間をDateTimeに追加します。
PT2Hなどのクロックのみの期間はオフセットを保持します。 P1Dなどのカレンダー期間は、指定されたタイムゾーン、またはロケールのタイムゾーンで適用されるため、「1日後」は夏時間の変更をまたいでも同じウォールクロック時刻のままです。
datetime_add_duration(datetime, duration, timezone, on_gap, on_fold)| パラメーター | 説明 |
|---|---|
| datetime | 進めるDateTime。 |
| 実行時間 | ISO 8601期間文字列。 |
| timezone | 任意のIANAタイムゾーン。 |
| on_gap, on_fold | 任意の夏時間解決方法。 |
クロック期間を日時に追加する
次の例は、クロック期間を日時に追加します。
Formula
datetime_add_duration(DateTime('2026-03-15T09:30:00Z'), 'PT2H')出力
2026-03-15T11:30:00Zdatetime_sub_duration
DateTimeから期間を減算します。 datetime_add_durationと同じ引数を取ります。
datetime_sub_duration(datetime, duration, timezone, on_gap, on_fold)| パラメーター | 説明 |
|---|---|
| datetime | 戻すDateTime。 |
| 実行時間 | ISO 8601期間文字列。 |
| timezone | 任意のIANAタイムゾーン。 |
| on_gap, on_fold | 任意の夏時間解決方法。 |
カレンダー期間を日時から減算する
次の例は、カレンダー期間を日時から減算します。
Formula
datetime_sub_duration(DateTime('2026-03-15T09:30:00Z'), 'P1D')出力
2026-03-14T09:30:00Z間隔を測定する
次の関数は、2つの時点間の間隔をDurationとして測定します。
until
最初の時点から2番目の時点までの符号付き期間を返します。
until(from, to)| パラメーター | 説明 |
|---|---|
| from | 開始DateTime。 |
| to | 終了DateTime。 |
早い時点から遅い時点までの期間を測定する
次の例は、早い時点から遅い時点までの期間を測定します。
Formula
until(DateTime('2026-03-15T09:00:00Z'), DateTime('2026-03-15T11:30:00Z'))出力
PT2H30Msince
2つの時点間の符号付き期間を返し、最初から2番目を引きます。これはuntilとは逆の引数順です。
since(now(), created_at)は、通常の質問の言い方である「作成されてからどれくらい経ったか」に一致します。
since(later, earlier)| パラメーター | 説明 |
|---|---|
| later | 測定元のDateTime。 |
| earlier | 測定先のDateTime。 |
早い時点からどれくらい経過したかを測定する
次の例は、早い時点からどれくらい経過したかを測定します。
Formula
since(DateTime('2026-03-15T11:30:00Z'), DateTime('2026-03-15T09:00:00Z'))出力
PT2H30Min_hours、in_minutes、in_seconds、in_days
Durationを、指定された単位の整数に変換します。丸めではなく切り捨てます。 PT150Mは3時間ではなく2時間です。
in_days(duration)
in_hours(duration)
in_minutes(duration)
in_seconds(duration)| パラメーター | 説明 |
|---|---|
| 実行時間 | 変換するDuration。 |
期間を整数時間に変換し、切り捨てる
次の例は、期間を整数時間に変換し、余りを切り捨てます。
Formula
in_hours(Duration('PT150M'))出力
2期間を整数分に変換する
次の例は、期間を整数分に変換します。
Formula
in_minutes(Duration('PT2H30M'))出力
150期間を整数秒に変換する
次の例は、期間を整数秒に変換します。
Formula
in_seconds(Duration('PT1M30S'))出力
90期間を整数日に変換する
次の例は、期間を整数日に変換します。
Formula
in_days(Duration('PT72H'))出力
3DURATION()はクロック期間のみを受け取ります
Durationコンストラクタは、ISO 8601期間の時刻部分を受け付けます: PT2H、PT30M、PT72H。 P1DやP3DT12Hなどのカレンダー形式はE020で拒否します。 3日はPT72Hとして記述します。
同じ理由でuntilとsinceはクロック期間を返すため、2週間の間隔はPT336Hとして返されます。カレンダー用語で差を表すには、代わりにPlainDate値でdate_diffを使用します。
datetime_add_duration関数とdatetime_sub_duration関数は、タイムゾーンで適用するため、カレンダー期間文字列を受け付けます。
ユースケース: SLAを過ぎたチケットにフラグを付ける
サポートキューでは、チケットが長時間開いたままになったらフラグを付ける必要があります。各チケットの経過時間をnow()と比較して測定し、48時間を超えるものにマークを付けます。
入力
{
"tickets": [
{"id": "T-1", "created_at": "2026-07-09T08:00:00Z"},
{"id": "T-2", "created_at": "2026-07-12T06:00:00Z"}
]
}Formula
_.tickets >> map_by(t ~> {
id: t.id,
age_hours: in_hours(since(now(), DateTime(t.created_at))),
breached: in_hours(since(now(), DateTime(t.created_at))) > 48
})出力
[
{"id": "T-1", "age_hours": 76, "breached": true},
{"id": "T-2", "age_hours": 6, "breached": false}
]この例では、2026-07-12T12:34:56.789Z時点のnow()を使用しています。このFormulaは常に同じ時点からage_hoursとbreachedを計算するため、両者が食い違うことはありません。これは、now()がステップ全体で固定されているためです。
期間境界
これらは値を期間の開始または終了にスナップします。これは、レポートウィンドウの作成やレコードを月ごとにバケット化する通常の方法です。
それぞれ、引数なしではUTCの現在時点、1つの引数では指定された値、2つの引数ではDateTimeとタイムゾーンを受け付けます。
start_of_dayとend_of_day
カレンダー日の最初と最後の時点を返します。
start_of_day(datetime)
end_of_day(datetime, timezone)| パラメーター | 説明 |
|---|---|
| datetime | 任意のDateTime。デフォルトはUTCの現在時刻です。 |
| timezone | 任意のIANAタイムゾーン。 |
日の最初の時点を見つける
次の例は、日の最初の時点を見つけます。
Formula
start_of_day(DateTime('2026-03-15T09:30:00Z'))出力
2026-03-15T00:00:00Z日の最後の時点を見つける
次の例は、日の最後の時点を見つけます。
Formula
end_of_day(DateTime('2026-03-15T09:30:00Z'))出力
2026-03-15T23:59:59.999999999Zend_of_dayは、その日の最後に表現可能な時点であり、翌日の午前0時ではありません。そのため、これに対する<=比較は、翌日を含めずにその日全体を含めます。
start_of_hour
その時間の最初の時点を返します。
start_of_hour(datetime, timezone)| パラメーター | 説明 |
|---|---|
| datetime | 任意のDateTime。デフォルトはUTCの現在時刻です。 |
| timezone | 任意のIANAタイムゾーン。 |
時間の最初の時点を見つける
次の例は、時間の最初の時点を見つけます。
Formula
start_of_hour(DateTime('2026-03-15T09:30:45Z'))出力
2026-03-15T09:00:00Zstart_of_weekとend_of_week
これらの関数はロケール対応です。週がどの日に始まるかは、レシピのロケールによって異なります。
start_of_week(value)
end_of_week(value, timezone)| パラメーター | 説明 |
|---|---|
| value | 任意のPlainDateまたはDateTime。デフォルトはUTCの現在時刻です。 |
| timezone | 値がDateTimeの場合の任意のIANAタイムゾーン。 |
週の最初の日を見つける
次の例は、週の最初の日を見つけます。
Formula
start_of_week(PlainDate('2026-03-15'))出力
2026-03-15週の最後の日を見つける
次の例は、週の最後の日を見つけます。
Formula
end_of_week(PlainDate('2026-03-15'))出力
2026-03-21start_of_monthとend_of_month
カレンダー月の最初の日と最後の日を返します。
start_of_month(value)
end_of_month(value, timezone)| パラメーター | 説明 |
|---|---|
| value | 任意のPlainDateまたはDateTime。デフォルトはUTCの現在時刻です。 |
| timezone | 値がDateTimeの場合の任意のIANAタイムゾーン。 |
月の最初の日を見つける
次の例は、月の最初の日を見つけます。
Formula
start_of_month(PlainDate('2026-03-15'))出力
2026-03-01月の最後の日を見つける
次の例は、月の最後の日を見つけます。
Formula
end_of_month(PlainDate('2026-03-15'))出力
2026-03-31start_of_quarterとend_of_quarter
カレンダー四半期の最初の日と最後の日を返します。
start_of_quarter(value)
end_of_quarter(value, timezone)| パラメーター | 説明 |
|---|---|
| value | 任意のPlainDateまたはDateTime。デフォルトはUTCの現在時刻です。 |
| timezone | 値がDateTimeの場合の任意のIANAタイムゾーン。 |
四半期の最初の日を見つける
次の例は、四半期の最初の日を見つけます。
Formula
start_of_quarter(PlainDate('2026-03-15'))出力
2026-01-01四半期の最後の日を見つける
次の例は、四半期の最後の日を見つけます。
Formula
end_of_quarter(PlainDate('2026-03-15'))出力
2026-03-31start_of_yearとend_of_year
カレンダー年の最初の日と最後の日を返します。
start_of_year(value)
end_of_year(value, timezone)| パラメーター | 説明 |
|---|---|
| value | 任意のPlainDateまたはDateTime。デフォルトはUTCの現在時刻です。 |
| timezone | 値がDateTimeの場合の任意のIANAタイムゾーン。 |
年の最初の日を見つける
次の例は、年の最初の日を見つけます。
Formula
start_of_year(PlainDate('2026-03-15'))出力
2026-01-01年の最後の日を見つける
次の例は、年の最後の日を見つけます。
Formula
end_of_year(PlainDate('2026-03-15'))出力
2026-12-31ユースケース: 今月のレポートウィンドウを作成する
レポートには、現在のカレンダー月の最初の日と最後の日が必要です。 start_of_monthとend_of_monthを使用して、両方をnow()から作成します。
入力
{}Formula
{
from: start_of_month(PlainDate(now())),
to: end_of_month(PlainDate(now()))
}出力
{"from": "2026-07-01", "to": "2026-07-31"}この例では、2026-07-12T12:34:56.789Z時点のnow()を使用しています。最初にPlainDateに変換します。レポートAPIはカレンダー日付を想定しており、時点の日付は読み取り側のゾーンによって異なります。
タイムゾーン
次の関数は、DateTimeをタイムゾーン間で変換し、そのオフセットを調べます。
in_tz
同じ時点を別のタイムゾーンで再レンダリングします。時点は変わらず、読み取り方だけが変わります。
in_tz(datetime, timezone)| パラメーター | 説明 |
|---|---|
| datetime | 再レンダリングするDateTime。 |
| timezone | Asia/TokyoなどのIANAタイムゾーン名。 |
時点を別のタイムゾーンで再レンダリングする
次の例は、時点を別のタイムゾーンで再レンダリングします。
Formula
in_tz(DateTime('2026-03-15T09:30:00Z'), 'Asia/Tokyo')出力
2026-03-15T18:30:00+09:00assume_tz
PlainDateTimeのウォールクロックの表示を、指定されたタイムゾーンで発生したものとして解釈し、DateTimeを生成します。
assume_tzはin_tzとは逆方向です。 in_tzは時点を保持し、表示を変更します。 assume_tzは表示を保持し、時点を決定します。ソースシステムがローカル時刻を送信し、ゾーンを別途通知する場合に使用します。
assume_tz(plain_datetime, timezone, on_gap, on_fold)| パラメーター | 説明 |
|---|---|
| plain_datetime | ゾーンなしの表示。 |
| timezone | IANAタイムゾーン名。 |
| on_gap | 任意です。夏時間の変更でスキップされた時刻を解決する方法。 |
| on_fold | 任意です。夏時間の変更で繰り返された時刻を解決する方法。 |
ウォールクロックの表示を指定されたタイムゾーンで発生したものとして解釈する
次の例は、ウォールクロックの表示を指定されたタイムゾーンで発生したものとして解釈します。
Formula
assume_tz(PlainDateTime('2026-03-15T09:30:00'), 'Europe/London')出力
2026-03-15T09:30:00Zutc_offset
UTCからのオフセットを正規文字列として返します: Z、または+02:00などの符号付きオフセット。
utc_offset(datetime)| パラメーター | 説明 |
|---|---|
| datetime | 調べるDateTime。 |
UTCの時点のオフセットを取得する
次の例は、UTCの時点のオフセットを取得します。
Formula
utc_offset(DateTime('2026-03-15T09:30:00Z'))出力
Z別のタイムゾーンに変換した後のオフセットを取得する
次の例は、別のタイムゾーンに変換した後のオフセットを取得します。
Formula
utc_offset(in_tz(DateTime('2026-07-15T09:30:00Z'), 'Asia/Tokyo'))出力
+09:00is_dst?
そのゾーンのその時点で夏時間が有効な場合はtrueを返します。
is_dst?(datetime, timezone)| パラメーター | 説明 |
|---|---|
| datetime | テストする時点。 |
| timezone | IANAタイムゾーン名。 |
有効な夏時間を検出する
次の例は、ロンドンの夏に有効な夏時間を検出します。
Formula
is_dst?(DateTime('2026-07-15T09:30:00Z'), 'Europe/London')出力
true夏時間が有効でない標準時を検出する
次の例は、夏時間が有効でない冬のロンドンの標準時を検出します。
Formula
is_dst?(DateTime('2026-01-15T09:30:00Z'), 'Europe/London')出力
falseobserves_dst?
指定された年に、そのタイムゾーンが夏時間を採用している場合はtrueを返します。
observes_dst?(timezone)
observes_dst?(timezone, year)| パラメーター | 説明 |
|---|---|
| timezone | IANAタイムゾーン名。 |
| year | 任意の年。デフォルトは現在の年です。 |
夏時間を採用しているタイムゾーンを確認する
次の例は、夏時間を採用しているタイムゾーンを確認します。
Formula
observes_dst?('Europe/London')出力
true夏時間を採用していないタイムゾーンを確認する
次の例は、夏時間を採用していないタイムゾーンを確認します。
Formula
observes_dst?('Asia/Tokyo')出力
falseユースケース: ローカル営業日でイベントをレポートする
同じUTC日の2つのイベントが、東京では異なるカレンダー日付になります。日付を取得する前にローカルゾーンに変換してください。そうしないと、15:00 UTC以降のすべてについて日次レポートが誤ります。
入力
{
"events": [
{"id": "E-1", "at": "2026-03-15T16:30:00Z"},
{"id": "E-2", "at": "2026-03-15T09:30:00Z"}
]
}Formula
_.events >> map_by(e ~> {
id: e.id,
tokyo_date: PlainDate(in_tz(DateTime(e.at), 'Asia/Tokyo'))
})出力
[
{"id": "E-1", "tokyo_date": "2026-03-16"},
{"id": "E-2", "tokyo_date": "2026-03-15"}
]E-1は、16:30 UTCが東京では翌朝01:30であるため、16日に移動します。元のUTC値のPlainDateでは、代わりに両方とも15日としてレポートされます。
現在時点とエポック時刻
次の関数は、現在時点を読み取るか、Unixエポック秒との間で変換します。
now
ステップ全体で固定されるUTCオフセット付きの現在時点を返します。引数は不要です。
now()epoch
Unixエポック秒からDateTimeを作成します。
epoch(seconds)| パラメーター | 説明 |
|---|---|
| 秒 | Unixエポック秒。 |
Unixエポック秒から日時を作成する
次の例は、Unixエポック秒から日時を作成します。
Formula
epoch(1773567000)出力
2026-03-15T09:30:00Zto_epoch
DateTimeをUnixエポック秒に変換します。ナノ秒精度が保持されるようにDecimalとして返します。
to_epoch(datetime)| パラメーター | 説明 |
|---|---|
| datetime | 変換するDateTime。 |
日時をUnixエポック秒に変換する
次の例は、日時をUnixエポック秒に変換します。
Formula
to_epoch(DateTime('2026-03-15T09:30:00Z'))出力
1773567000to_iso8601
DateTimeをオフセット付きのISO 8601としてフォーマットします。
to_iso8601(datetime)| パラメーター | 説明 |
|---|---|
| datetime | フォーマットするDateTime。 |
日時をISO 8601としてフォーマットする
次の例は、日時をISO 8601としてフォーマットします。
Formula
to_iso8601(DateTime('2026-03-15T09:30:00Z'))出力
2026-03-15T09:30:00Z関連情報
最終更新日: