📅

日付範囲の間隔を30分単位で計上するには

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