逆引きFormula 2.0 に戻る
日付プロパティには、開始時間と終了時間を設定できます。Notion kyoto の何でも相談で、「範囲の終了時間を取得するのは」という話だったので、
start
と end
で計算できますという返事をしました(Formula 2.0 からは dateStart
と dateEnd
に変わっています)。その後、勤務時間などを保存したものを30分単位で計算したいという話題になったので、面白いネタだと思ってここの記事にしてみました。- 計算用にまず数値として計算します。
dateStart
,dateEnd
で取り出したそれぞれの日付データをdateBetween
で分単位の数値にします。30分単位で計上したいとのことだったので、30 で割ったのちに切り捨てをします。時間単位の方がわかりやすいので、最後に 2 で割りました。これを差分数値という属性にします。
lets( /* 日付プロパティの値を変数 d に代入 */ d, prop("Date"), /* d の開始時刻を変数 ds に代入 */ ds, d.dateStart(), /* d の終了時刻を変数 de に代入 */ de, d.dateEnd(), /* de と ds の分差分を変数 m に代入 */ m, de.dateBetween(ds, "minutes"), /* 分差分を30で割り、小数点以下を切り捨て後に時間に換算 */ (m / 30).floor() / 2 )
- 表示が数値だと味気ないので、文字列に変換します。文字列処理で頑張るよりも formatDate で時間・分を表示する方が簡単そうです。24時間以内のものだけになりますが。
/* 現在時刻を変数 n に代入 */ let(n, now(), /* 差分数値を時刻の部分に設定(現在時刻を減算し、差分数値時間を加算) */ n.dateSubtract(n.hour() * 60 + n.minute() - prop("差分数値")*60, "minutes") /* 時間部分のみを表示 */ .formatDate("HH:mm") )
日付範囲
名前
Date
差分数値
表示用