Date type(日時型)

概要

この型は、ミリ秒単位で計測される特定の瞬間を表します。
日付を表示するとき、Bubble はユーザーの現在のタイムゾーンで読みやすい日時形式に変換します。
表示方法は 「:formatted as …」 オペレーターを使ってカスタマイズできます。

あるタイムゾーンのユーザーが日付を保存し、別のタイムゾーンのユーザーがその日付を見る場合、後者のユーザーには自身のローカルタイムゾーンに合わせた時刻で表示されます。

ユーザーのタイムゾーンについて

ユーザーのタイムゾーンは、Web ブラウザが報告するものを使用します。
ほとんどのブラウザはタイムゾーンを返しますが、返さない場合はユーザーの時計設定から推測します。

ワークフローを実行する際、そのワークフローを開始した時点のユーザーのタイムゾーンを使用します。
つまり、スケジュールされたワークフロー、定期ワークフローでは、スケジュールを設定したときのタイムゾーンが使われ続けます。

例:
ユーザーがワークフローAを実行
→ Aが2日後にBを実行するようスケジュール
→ ユーザーが飛行機に乗って別のタイムゾーンに移動
→ 新しいタイムゾーンでワークフローCを実行
A と B は同じタイムゾーンで実行されるが、C は別のタイムゾーンで実行されます

ブラウザを介さないケース(例:Bubble API でワークフローをトリガーする)では、
UTC を使用します。

日付の計算について

Bubble の日付計算には下記の2種類あります。

  1. カレンダー認識型(calendar-aware):月の日数やサマータイムの影響を受ける可変的な時間計算。
  2. 絶対時間型(absolute):ミリ秒単位の固定値で加算・減算する時間計算。

Bubble の日付計算の多くは カレンダー認識型です。

例:
アメリカ東部時間 (ET) のユーザーが「2018年3月11日 1:00 AM」に 1日を追加する場合、本来は23時間後(サマータイム切り替えのため)となりますが、結果は 「2018年3月12日 1:00 AM」 と表示されます。

この計算はユーザーの現在のタイムゾーンで行われるため、異なるタイムゾーンの2人が同じ計算をした場合、異なる結果になる可能性があります。

例外:absolute(絶対時間)計算を行うオペレーター

以下は例外的に「絶対時間計算」を行います。

  • +(seconds)
  • +(hours)

これらは常に、

  • 1秒 = 1000ミリ秒
  • 1時間 = 3600秒 = 3,600,000ミリ秒

を正確に加算します。

よって、異なるタイムゾーンのユーザーが同じ値を追加しても、同じ瞬間の日時が得られます(ただし表示は各自のタイムゾーン)。

端数の扱い

カレンダー認識型の場合

小数点は 最も近い整数に丸められます。(例:+0.9 days → +1 day)
※ 例外:+years は「最も近い月数」に丸められます。

絶対時間型の場合

端数は 最も近いミリ秒に丸められます。(例:+1.2005 seconds → 1201 ms 加算)


is not in

値が引数リストに存在しない場合にのみ「no」を返します。


:formatted as …

日付を任意の形式にフォーマットします。


<- range ->

2つの日付から date range(日時範囲) を生成します。
これは開始日時から終了日時までの時間のスパンを表します。
空き時間や予約枠などの表現に便利です。


+(seconds)

指定秒数だけ日時を加算/減算します(絶対時間計算)。


+(minutes)

指定分数を加算/減算します(絶対時間計算)。


+(hours)

指定時間を加算/減算します(絶対時間計算)。


+(days)

指定日数を加算/減算します(カレンダー認識型)。
サマータイムを跨ぐ場合は23時間になるなど調整されます。


+(months)

指定月数を加算/減算します(カレンダー認識型)。
最終月に同日が存在しない場合は「月末」が使われます。
例:1月30日 + 1ヶ月 → 2月28日(閏年は29日)


+(years)

指定年数を加算/減算します(カレンダー認識型)。


change seconds to …

秒を指定値に変更します。ミリ秒は0にリセットされます。
例:22:21:42 →(0を指定)→ 22:21:00


change time to …

日付部分を元の日付から、時刻部分を別の日付から取得し、それらを組み合わせた新しい日時を作成します。日付ピッカーと時間ピッカーを組み合わせる際に使用します。


change minutes to …

分を指定値に変更します。60以上は時間に繰り上がります。


change hours to …

時間を指定値に変更します。24以上は日付に繰り上がります。


change date (day) to …

日を指定値に変更します。日数が月の日数を超える場合は翌月に繰り上がります。


change month to …

月を指定値に変更します(1 = 1月)。変更前の月の同日が存在しない場合は「月末」に調整されます。


change years to …

年を指定値に変更します。


>

1つ目の日付が2つ目より後なら「yes」を返します。


<

1つ目の日付が2つ目より前なら「yes」を返します。


2つの日付の差を Time difference(時間差) として返します。


Extract from date

日付の各要素を取り出し、数値として返します:

  • minute(0–59)
  • hour(0–23)
  • day(曜日:日曜=0 … 土曜=6)
  • date(1–31)
  • week(1–53、ISO週準拠)
  • month(1–12)
  • year(例:2018)
  • UNIX(ミリ秒単位のUNIXタイム)

UNIX秒が必要な場合は数値を1000で除算してください。


Rounded down

指定した単位で日時を切り捨てます(ユーザーのタイムゾーン基準)。


Equals rounded down

2つの日付を指定単位で切り捨て、その結果が一致する場合「yes」を返します。


<- max ->

2つの日付の遅い方を返します。


<- min ->

2つの日付の早い方を返します。