時刻を含む情報から日付のみの情報を得るには?: Notion Formula 解説 (25)

はじめに

Notion Formula の第25回目は、「時刻を含む情報から日付のみの情報を得るには?」とします。逆引きの記事はこちらです。

時刻を含む情報から日付のみの情報を得るには?

数式

早速、使われている数式を見てみます。一行ずつにコメントがついているので、難しくはないと思いますが、これまで解説した関数の復習も兼ねて一つずつ見てみましょう。一つは「時刻なし」で Formula 1.0 の頃の方法です。

/* 日付プロパティの値を変数 d に代入 */
let(d, prop("日付"),
 /* d から時間の数値を得て、その時間を減算 */
 d.dateSubtract(d.hour(), "hours")
  /* d から分の数値を得て、その分を減算 */
  .dateSubtract(d.minute(), "minutes")
)

もう一つは「時刻なし2.0」で、Formula 2.0 で追加された parseDate() を使うものです。

/* 日付プロパティの日付を YYYY-MM-DD の文字列に変換 */
prop("日付").formatDate("YYYY-MM-DD")
 /* 作成した文字列から日付を作成 */
 .parseDate()

サンプルデータは以下のようになっています。時刻なしは 0:00 という時刻情報が残っていますが、parseDate の場合には日付のみの情報になります。

日付のみのプロパティを作成

まず、時刻なしの Formula をみてみます。

  1. 最初の行は let です。日付プロパティを何度も参照するので、d という変数に入れています。上の a の列では「2024年5月10日 19:04」という日付が d に入ります。

     /* 日付プロパティの値を変数 d に代入 */
     let(d, prop("日付"),
    
  2. 次の行は日付の時間の数値を d.hour() で取得します。上の例では 19 が返ります。その数値を hours として d から引き算します。結果として、「2024年5月10日 0:04」という日付が返ります。

      /* d から時間の数値を得て、その時間を減算 */
      d.dateSubtract(d.hour(), "hours")
    
  3. 最後の行は日付の分の数値を d.minute() で取得します。上の例では 4 が返ります。その数値を minutes として d から引き算します。結果として、「2024年5月10日 0:00」という日付が返ります。これが let 、すなわち Formula の返り値になります。

      /* d から時間の数値を得て、その時間を減算 */
      d.dateSubtract(d.hour(), "hours")
    

もう一つの「時刻なし2.0」も見ていきます。

  1. 最初の行は日付プロパティを formatDate で文字列に変換します。フォーマット文字列は YYYY-MM-DD となっているため、「2024-05-10」という文字列が作成されます。

     /* 日付プロパティの日付を YYYY-MM-DD の文字列に変換 */
     prop("日付").formatDate("YYYY-MM-DD")
    
  2. 最後の行はこの文字列を日付に変換します。日付の情報しかないので、時刻情報がなくなるわけです。

      /* 作成した文字列から日付を作成 */
      .parseDate()
    

おわりに

今回は、「時刻を含む情報から日付のみの情報を得るには?」を解説しました。Formula 2.0 になるまでは、dateSubstract で毎回時間と分を引き算する Formula を多くの人が作っていましたが、今は parseDate で簡単に作成できるようになったので楽になりましたね。