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 ​

年を返します。

text
year(value)
パラメーター説明
valuePlainDate、DateTime、またはPlainDateTime。
カレンダー日付から年を返す

次の例は、カレンダー日付から年を返します。

Formula

text
year(PlainDate('2026-03-15'))

出力

text
2026

month ​

月を1から12の数値として返します。

text
month(value)
パラメーター説明
valuePlainDate、DateTime、またはPlainDateTime。
カレンダー日付から月番号を返す

次の例は、カレンダー日付から月番号を返します。

Formula

text
month(PlainDate('2026-03-15'))

出力

text
3

day ​

月の日を1から31で返します。

text
day(value)
パラメーター説明
valuePlainDate、DateTime、またはPlainDateTime。
カレンダー日付から月の日を返す

次の例は、カレンダー日付から月の日を返します。

Formula

text
day(PlainDate('2026-03-15'))

出力

text
15

quarter ​

カレンダー四半期を1から4で返します。

text
quarter(value)
パラメーター説明
valuePlainDate、DateTime、またはPlainDateTime。
日付からカレンダー四半期を返す

次の例は、日付からカレンダー四半期を返します。

Formula

text
quarter(PlainDate('2026-03-15'))

出力

text
1

day_of_year ​

年の日を1から366で返します。

text
day_of_year(value)
パラメーター説明
valuePlainDate、DateTime、またはPlainDateTime。
年内の日番号を返す

次の例は、年内の日番号を返します。

Formula

text
day_of_year(PlainDate('2026-03-15'))

出力

text
74

day_of_week ​

曜日を1から7で返します。1はロケールの週の最初の日です。

そのため、この数値はロケールに依存します。同じ日付でも、週が日曜日に始まる場所では1、月曜日に始まる場所では7になります。数値が宛先システムに入る場合は、day_of_week_nameとの明示的な比較を優先するか、レシピのロケールを確認してください。

text
day_of_week(value)
パラメーター説明
valuePlainDate、DateTime、またはPlainDateTime。
曜日をロケール依存の数値として返す

次の例は、曜日をロケール依存の数値として返します。

Formula

text
day_of_week(PlainDate('2026-03-15'))

出力

text
1

day_of_week_name ​

曜日のローカライズされた名前を返します。

text
day_of_week_name(value)
パラメーター説明
valuePlainDate、DateTime、またはPlainDateTime。
曜日のローカライズされた名前を返す

次の例は、曜日のローカライズされた名前を返します。

Formula

text
day_of_week_name(PlainDate('2026-03-15'))

出力

text
日曜日

month_name ​

月のローカライズされた名前を返します。

text
month_name(value)
パラメーター説明
valuePlainDate、DateTime、またはPlainDateTime。
月のローカライズされた名前を返す

次の例は、月のローカライズされた名前を返します。

Formula

text
month_name(PlainDate('2026-03-15'))

出力

text
March

hour ​

時を0から23で返します。

text
hour(value)
パラメーター説明
valueDateTime、PlainDateTime、またはPlainTime。
タイムスタンプから時を返す

次の例は、タイムスタンプから時を返します。

Formula

text
hour(DateTime('2026-03-15T09:30:45Z'))

出力

text
9

minute ​

分を0から59で返します。

text
minute(value)
パラメーター説明
valueDateTime、PlainDateTime、またはPlainTime。
タイムスタンプから分を返す

次の例は、タイムスタンプから分を返します。

Formula

text
minute(DateTime('2026-03-15T09:30:45Z'))

出力

text
30

second ​

秒をDecimalとして返すため、小数精度が保持されます。

text
second(value)
パラメーター説明
valueDateTime、PlainDateTime、またはPlainTime。
タイムスタンプから秒を返す

次の例は、タイムスタンプから秒を返します。

Formula

text
second(DateTime('2026-03-15T09:30:45Z'))

出力

text
45

time ​

ウォールクロック時刻をPlainTimeとして返します。タイムゾーン引数を指定すると、代わりにそのゾーンのローカル時刻を返します。

text
time(datetime, timezone)
パラメーター説明
datetimeDateTimeまたはPlainDateTime。
timezone任意のIANAタイムゾーン名。
タイムゾーンを指定せずにウォールクロック時刻を返す

次の例は、タイムゾーンを指定せずにウォールクロック時刻を返します。

Formula

text
time(DateTime('2026-03-15T09:30:45Z'))

出力

text
09:30:45
東京で読み取られるウォールクロック時刻を返す

次の例は、東京で読み取られるウォールクロック時刻を返します。

Formula

text
time(DateTime('2026-03-15T09:30:45Z'), 'Asia/Tokyo')

出力

text
18:30:45

to_map ​

Durationを含む任意の時間値を、そのコンポーネントのマップに分解します。

text
to_map(value)
パラメーター説明
valuePlainDate、DateTime、PlainDateTime、PlainTime、またはDuration。
カレンダー日付をコンポーネントに分解する

次の例は、カレンダー日付をコンポーネントに分解します。

Formula

text
to_map(PlainDate('2026-03-15'))

出力

text
{year: 2026, month: 3, day: 15}
期間をコンポーネントに分解する

次の例は、期間をコンポーネントに分解します。

Formula

text
to_map(Duration('PT2H30M'))

出力

text
{hours: 2, minutes: 30, seconds: 0}

カレンダー演算 ​

カレンダー上の1か月と30日は同じ増分ではありません。その違いは月末に現れます。これら2つの関数は、そのケースを異なる方法で処理します。

add_months ​

指定した月数を追加し、対象月の日数が少ない場合は月末にクランプします。 ExcelのEDATE関数と同等です。

1月31日に1か月を足すと、2月28日、うるう年では2月29日になります。ビジネスルールが「翌月の同じ日付、存在しない場合は最終日」を意味する場合に使用します。これはほとんどの請求およびサブスクリプションルールを表します。

text
add_months(date, months)
パラメーター説明
date進めるPlainDate。
months追加する月数。負の値は、代わりに日付を後ろに移動します。
短い月の最終日にクランプする

次の例は、短い月の最終日にクランプします。

Formula

text
add_months(PlainDate('2026-01-31'), 1)

出力

text
2026-02-28
負の月数値で日付を後ろに移動する

次の例は、負の月数を使用して日付を後ろに移動します。

Formula

text
add_months(PlainDate('2026-03-15'), -2)

出力

text
2026-01-15

advance_date ​

PlainDateを年、月、日の任意の組み合わせで進めます。

advance_dateは、add_monthsとは異なり、結果が実在する日付にならない場合にクランプせずエラーを発生させます。不可能な日付が入力の誤りを意味し、日を黙って移動するよりもジョブを失敗させたい場合に使用します。

text
advance_date(date, delta)
パラメーター説明
date進めるPlainDate。
deltayears、months、daysのいずれかを含むマップ。認識されないキーはE222を発生させます。
日数で日付を進める

次の例は、日数で日付を進めます。

Formula

text
advance_date(PlainDate('2026-03-15'), {days: 10})

出力

text
2026-03-25
年と月をまとめて日付を進める

次の例は、年と月をまとめて日付を進めます。

Formula

text
advance_date(PlainDate('2026-03-15'), {years: 1, months: 2})

出力

text
2027-05-15

date_diff ​

2つの日付間の差を年、月、日に分解します。

date_diffは最初の日付から2番目の日付までを測定するため、2番目の日付が早い場合は負のコンポーネントになります。

text
date_diff(from, to)
パラメーター説明
from開始PlainDate。
to終了PlainDate。
早い日付から遅い日付までの差を測定する

次の例は、早い日付から遅い日付までの差を測定します。

Formula

text
date_diff(PlainDate('2025-01-10'), PlainDate('2026-03-15'))

出力

text
{years: 1, months: 2, days: 5}
遅い日付から早い日付までの差を測定する

次の例は、遅い日付から早い日付までの差を測定し、負のコンポーネントを返します。

Formula

text
date_diff(PlainDate('2026-03-15'), PlainDate('2025-01-10'))

出力

text
{years: -1, months: -2, days: -5}

advance_datetime ​

指定されたタイムゾーンで、DateTimeを年、月、日、時、分、秒で進めます。

text
advance_datetime(datetime, delta, timezone, on_gap, on_fold)
パラメーター説明
datetime進めるDateTime。
deltayears、months、days、hours、minutes、secondsのいずれかを含むマップ。認識されないキーはE222を発生させます。
timezoneカレンダー演算を実行する任意のIANAタイムゾーン。
on_gap任意です。夏時間の変更でスキップされたローカル時刻を解決する方法。
on_fold任意です。夏時間の変更で繰り返されたローカル時刻を解決する方法。
日時を時間単位で進める

次の例は、日時を時間単位で進めます。

Formula

text
advance_datetime(DateTime('2026-03-15T09:30:00Z'), {hours: 5})

出力

text
2026-03-15T14:30:00Z

期間演算 ​

次の関数は、ISO 8601期間をDateTimeに加算または減算します。

datetime_add_duration ​

ISO 8601文字列として記述された期間をDateTimeに追加します。

PT2Hなどのクロックのみの期間はオフセットを保持します。 P1Dなどのカレンダー期間は、指定されたタイムゾーン、またはロケールのタイムゾーンで適用されるため、「1日後」は夏時間の変更をまたいでも同じウォールクロック時刻のままです。

text
datetime_add_duration(datetime, duration, timezone, on_gap, on_fold)
パラメーター説明
datetime進めるDateTime。
実行時間ISO 8601期間文字列。
timezone任意のIANAタイムゾーン。
on_gap, on_fold任意の夏時間解決方法。
クロック期間を日時に追加する

次の例は、クロック期間を日時に追加します。

Formula

text
datetime_add_duration(DateTime('2026-03-15T09:30:00Z'), 'PT2H')

出力

text
2026-03-15T11:30:00Z

datetime_sub_duration ​

DateTimeから期間を減算します。 datetime_add_durationと同じ引数を取ります。

text
datetime_sub_duration(datetime, duration, timezone, on_gap, on_fold)
パラメーター説明
datetime戻すDateTime。
実行時間ISO 8601期間文字列。
timezone任意のIANAタイムゾーン。
on_gap, on_fold任意の夏時間解決方法。
カレンダー期間を日時から減算する

次の例は、カレンダー期間を日時から減算します。

Formula

text
datetime_sub_duration(DateTime('2026-03-15T09:30:00Z'), 'P1D')

出力

text
2026-03-14T09:30:00Z

間隔を測定する ​

次の関数は、2つの時点間の間隔をDurationとして測定します。

until ​

最初の時点から2番目の時点までの符号付き期間を返します。

text
until(from, to)
パラメーター説明
from開始DateTime。
to終了DateTime。
早い時点から遅い時点までの期間を測定する

次の例は、早い時点から遅い時点までの期間を測定します。

Formula

text
until(DateTime('2026-03-15T09:00:00Z'), DateTime('2026-03-15T11:30:00Z'))

出力

text
PT2H30M

since ​

2つの時点間の符号付き期間を返し、最初から2番目を引きます。これはuntilとは逆の引数順です。

since(now(), created_at)は、通常の質問の言い方である「作成されてからどれくらい経ったか」に一致します。

text
since(later, earlier)
パラメーター説明
later測定元のDateTime。
earlier測定先のDateTime。
早い時点からどれくらい経過したかを測定する

次の例は、早い時点からどれくらい経過したかを測定します。

Formula

text
since(DateTime('2026-03-15T11:30:00Z'), DateTime('2026-03-15T09:00:00Z'))

出力

text
PT2H30M

in_hours、in_minutes、in_seconds、in_days ​

Durationを、指定された単位の整数に変換します。丸めではなく切り捨てます。 PT150Mは3時間ではなく2時間です。

text
in_days(duration)
in_hours(duration)
in_minutes(duration)
in_seconds(duration)
パラメーター説明
実行時間変換するDuration。
期間を整数時間に変換し、切り捨てる

次の例は、期間を整数時間に変換し、余りを切り捨てます。

Formula

text
in_hours(Duration('PT150M'))

出力

text
2
期間を整数分に変換する

次の例は、期間を整数分に変換します。

Formula

text
in_minutes(Duration('PT2H30M'))

出力

text
150
期間を整数秒に変換する

次の例は、期間を整数秒に変換します。

Formula

text
in_seconds(Duration('PT1M30S'))

出力

text
90
期間を整数日に変換する

次の例は、期間を整数日に変換します。

Formula

text
in_days(Duration('PT72H'))

出力

text
3

DURATION()はクロック期間のみを受け取ります

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時間を超えるものにマークを付けます。

入力

json
{
  "tickets": [
    {"id": "T-1", "created_at": "2026-07-09T08:00:00Z"},
    {"id": "T-2", "created_at": "2026-07-12T06:00:00Z"}
  ]
}

Formula

text
_.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
})

出力

json
[
  {"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 ​

カレンダー日の最初と最後の時点を返します。

text
start_of_day(datetime)
end_of_day(datetime, timezone)
パラメーター説明
datetime任意のDateTime。デフォルトはUTCの現在時刻です。
timezone任意のIANAタイムゾーン。
日の最初の時点を見つける

次の例は、日の最初の時点を見つけます。

Formula

text
start_of_day(DateTime('2026-03-15T09:30:00Z'))

出力

text
2026-03-15T00:00:00Z
日の最後の時点を見つける

次の例は、日の最後の時点を見つけます。

Formula

text
end_of_day(DateTime('2026-03-15T09:30:00Z'))

出力

text
2026-03-15T23:59:59.999999999Z

end_of_dayは、その日の最後に表現可能な時点であり、翌日の午前0時ではありません。そのため、これに対する<=比較は、翌日を含めずにその日全体を含めます。

start_of_hour ​

その時間の最初の時点を返します。

text
start_of_hour(datetime, timezone)
パラメーター説明
datetime任意のDateTime。デフォルトはUTCの現在時刻です。
timezone任意のIANAタイムゾーン。
時間の最初の時点を見つける

次の例は、時間の最初の時点を見つけます。

Formula

text
start_of_hour(DateTime('2026-03-15T09:30:45Z'))

出力

text
2026-03-15T09:00:00Z

start_of_weekとend_of_week ​

これらの関数はロケール対応です。週がどの日に始まるかは、レシピのロケールによって異なります。

text
start_of_week(value)
end_of_week(value, timezone)
パラメーター説明
value任意のPlainDateまたはDateTime。デフォルトはUTCの現在時刻です。
timezone値がDateTimeの場合の任意のIANAタイムゾーン。
週の最初の日を見つける

次の例は、週の最初の日を見つけます。

Formula

text
start_of_week(PlainDate('2026-03-15'))

出力

text
2026-03-15
週の最後の日を見つける

次の例は、週の最後の日を見つけます。

Formula

text
end_of_week(PlainDate('2026-03-15'))

出力

text
2026-03-21

start_of_monthとend_of_month ​

カレンダー月の最初の日と最後の日を返します。

text
start_of_month(value)
end_of_month(value, timezone)
パラメーター説明
value任意のPlainDateまたはDateTime。デフォルトはUTCの現在時刻です。
timezone値がDateTimeの場合の任意のIANAタイムゾーン。
月の最初の日を見つける

次の例は、月の最初の日を見つけます。

Formula

text
start_of_month(PlainDate('2026-03-15'))

出力

text
2026-03-01
月の最後の日を見つける

次の例は、月の最後の日を見つけます。

Formula

text
end_of_month(PlainDate('2026-03-15'))

出力

text
2026-03-31

start_of_quarterとend_of_quarter ​

カレンダー四半期の最初の日と最後の日を返します。

text
start_of_quarter(value)
end_of_quarter(value, timezone)
パラメーター説明
value任意のPlainDateまたはDateTime。デフォルトはUTCの現在時刻です。
timezone値がDateTimeの場合の任意のIANAタイムゾーン。
四半期の最初の日を見つける

次の例は、四半期の最初の日を見つけます。

Formula

text
start_of_quarter(PlainDate('2026-03-15'))

出力

text
2026-01-01
四半期の最後の日を見つける

次の例は、四半期の最後の日を見つけます。

Formula

text
end_of_quarter(PlainDate('2026-03-15'))

出力

text
2026-03-31

start_of_yearとend_of_year ​

カレンダー年の最初の日と最後の日を返します。

text
start_of_year(value)
end_of_year(value, timezone)
パラメーター説明
value任意のPlainDateまたはDateTime。デフォルトはUTCの現在時刻です。
timezone値がDateTimeの場合の任意のIANAタイムゾーン。
年の最初の日を見つける

次の例は、年の最初の日を見つけます。

Formula

text
start_of_year(PlainDate('2026-03-15'))

出力

text
2026-01-01
年の最後の日を見つける

次の例は、年の最後の日を見つけます。

Formula

text
end_of_year(PlainDate('2026-03-15'))

出力

text
2026-12-31

ユースケース: 今月のレポートウィンドウを作成する ​

レポートには、現在のカレンダー月の最初の日と最後の日が必要です。 start_of_monthとend_of_monthを使用して、両方をnow()から作成します。

入力

json
{}

Formula

text
{
  from: start_of_month(PlainDate(now())),
  to: end_of_month(PlainDate(now()))
}

出力

json
{"from": "2026-07-01", "to": "2026-07-31"}

この例では、2026-07-12T12:34:56.789Z時点のnow()を使用しています。最初にPlainDateに変換します。レポートAPIはカレンダー日付を想定しており、時点の日付は読み取り側のゾーンによって異なります。

タイムゾーン ​

次の関数は、DateTimeをタイムゾーン間で変換し、そのオフセットを調べます。

in_tz ​

同じ時点を別のタイムゾーンで再レンダリングします。時点は変わらず、読み取り方だけが変わります。

text
in_tz(datetime, timezone)
パラメーター説明
datetime再レンダリングするDateTime。
timezoneAsia/TokyoなどのIANAタイムゾーン名。
時点を別のタイムゾーンで再レンダリングする

次の例は、時点を別のタイムゾーンで再レンダリングします。

Formula

text
in_tz(DateTime('2026-03-15T09:30:00Z'), 'Asia/Tokyo')

出力

text
2026-03-15T18:30:00+09:00

assume_tz ​

PlainDateTimeのウォールクロックの表示を、指定されたタイムゾーンで発生したものとして解釈し、DateTimeを生成します。

assume_tzはin_tzとは逆方向です。 in_tzは時点を保持し、表示を変更します。 assume_tzは表示を保持し、時点を決定します。ソースシステムがローカル時刻を送信し、ゾーンを別途通知する場合に使用します。

text
assume_tz(plain_datetime, timezone, on_gap, on_fold)
パラメーター説明
plain_datetimeゾーンなしの表示。
timezoneIANAタイムゾーン名。
on_gap任意です。夏時間の変更でスキップされた時刻を解決する方法。
on_fold任意です。夏時間の変更で繰り返された時刻を解決する方法。
ウォールクロックの表示を指定されたタイムゾーンで発生したものとして解釈する

次の例は、ウォールクロックの表示を指定されたタイムゾーンで発生したものとして解釈します。

Formula

text
assume_tz(PlainDateTime('2026-03-15T09:30:00'), 'Europe/London')

出力

text
2026-03-15T09:30:00Z

utc_offset ​

UTCからのオフセットを正規文字列として返します: Z、または+02:00などの符号付きオフセット。

text
utc_offset(datetime)
パラメーター説明
datetime調べるDateTime。
UTCの時点のオフセットを取得する

次の例は、UTCの時点のオフセットを取得します。

Formula

text
utc_offset(DateTime('2026-03-15T09:30:00Z'))

出力

text
Z
別のタイムゾーンに変換した後のオフセットを取得する

次の例は、別のタイムゾーンに変換した後のオフセットを取得します。

Formula

text
utc_offset(in_tz(DateTime('2026-07-15T09:30:00Z'), 'Asia/Tokyo'))

出力

text
+09:00

is_dst? ​

そのゾーンのその時点で夏時間が有効な場合はtrueを返します。

text
is_dst?(datetime, timezone)
パラメーター説明
datetimeテストする時点。
timezoneIANAタイムゾーン名。
有効な夏時間を検出する

次の例は、ロンドンの夏に有効な夏時間を検出します。

Formula

text
is_dst?(DateTime('2026-07-15T09:30:00Z'), 'Europe/London')

出力

text
true
夏時間が有効でない標準時を検出する

次の例は、夏時間が有効でない冬のロンドンの標準時を検出します。

Formula

text
is_dst?(DateTime('2026-01-15T09:30:00Z'), 'Europe/London')

出力

text
false

observes_dst? ​

指定された年に、そのタイムゾーンが夏時間を採用している場合はtrueを返します。

text
observes_dst?(timezone)
observes_dst?(timezone, year)
パラメーター説明
timezoneIANAタイムゾーン名。
year任意の年。デフォルトは現在の年です。
夏時間を採用しているタイムゾーンを確認する

次の例は、夏時間を採用しているタイムゾーンを確認します。

Formula

text
observes_dst?('Europe/London')

出力

text
true
夏時間を採用していないタイムゾーンを確認する

次の例は、夏時間を採用していないタイムゾーンを確認します。

Formula

text
observes_dst?('Asia/Tokyo')

出力

text
false

ユースケース: ローカル営業日でイベントをレポートする ​

同じUTC日の2つのイベントが、東京では異なるカレンダー日付になります。日付を取得する前にローカルゾーンに変換してください。そうしないと、15:00 UTC以降のすべてについて日次レポートが誤ります。

入力

json
{
  "events": [
    {"id": "E-1", "at": "2026-03-15T16:30:00Z"},
    {"id": "E-2", "at": "2026-03-15T09:30:00Z"}
  ]
}

Formula

text
_.events >> map_by(e ~> {
  id: e.id,
  tokyo_date: PlainDate(in_tz(DateTime(e.at), 'Asia/Tokyo'))
})

出力

json
[
  {"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オフセット付きの現在時点を返します。引数は不要です。

text
now()

epoch ​

Unixエポック秒からDateTimeを作成します。

text
epoch(seconds)
パラメーター説明
秒Unixエポック秒。
Unixエポック秒から日時を作成する

次の例は、Unixエポック秒から日時を作成します。

Formula

text
epoch(1773567000)

出力

text
2026-03-15T09:30:00Z

to_epoch ​

DateTimeをUnixエポック秒に変換します。ナノ秒精度が保持されるようにDecimalとして返します。

text
to_epoch(datetime)
パラメーター説明
datetime変換するDateTime。
日時をUnixエポック秒に変換する

次の例は、日時をUnixエポック秒に変換します。

Formula

text
to_epoch(DateTime('2026-03-15T09:30:00Z'))

出力

text
1773567000

to_iso8601 ​

DateTimeをオフセット付きのISO 8601としてフォーマットします。

text
to_iso8601(datetime)
パラメーター説明
datetimeフォーマットするDateTime。
日時をISO 8601としてフォーマットする

次の例は、日時をISO 8601としてフォーマットします。

Formula

text
to_iso8601(DateTime('2026-03-15T09:30:00Z'))

出力

text
2026-03-15T09:30:00Z

最終更新日: