逆引きFormula 2.0 に戻る

日付プロパティには、開始時間と終了時間を設定できます。Notion kyoto の何でも相談で、「範囲の終了時間を取得するのは」という話だったので、startend で計算できますという返事をしました(Formula 2.0 からは dateStartdateEnd に変わっています)。その後、勤務時間などを保存したものを30分単位で計算したいという話題になったので、面白いネタだと思ってここの記事にしてみました。

  1. 計算用にまず数値として計算します。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
    )
    

    letsdateStartdateEnddateBetween/, dividefloor

  2. 表示が数値だと味気ないので、文字列に変換します。文字列処理で頑張るよりも formatDate で時間・分を表示する方が簡単そうです。24時間以内のものだけになりますが。

    /* 現在時刻を変数 n に代入 */
    let(n, now(),
     /* 差分数値を時刻の部分に設定(現在時刻を減算し、差分数値時間を加算) */
     n.dateSubtract(n.hour() * 60 + n.minute() - prop("差分数値")*60, "minutes")
      /* 時間部分のみを表示 */
      .formatDate("HH:mm")
    )
    

    nowdateSubtracthourminuteformatDate

日付範囲