月初・月末の日付を得るには?: Notion Formula 解説 (26)

はじめに

Notion Formula の第26回目は、「月初・月末の日付を得るには?」とします。逆引きの記事はこちらです。プロパティの日付の月初・月末を得るものと、今月初日・今月末が分かれています。

月の初日を得るには

早速、使われている数式を見てみます。昨日の日付のみの情報を得るものとメソッドは一緒でした。違いはフォーマット文字列が「YYYY-MM」になっているだけです。これによって日付の情報が消えるので初日になるということです。簡単ですね。

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

今月初日を得るには

今月の初日を得るのも同じです。 prop("日付") の部分が today() に変わっただけです。

/* today() を YYYYMM の文字列に変換 */
today().formatDate("YYYY-MM")
 /* 作成した文字列から日付を作成 */
 .parseDate()

月の最終日を得るには

月の最終日は31日だったり、30日だったり、28日だったりとバラバラです。ただし、翌日は常に1日です。そこから、翌月1日に移動したのちに1日前に移動します。特に1行ずつ説明するまでもないかと思います。

/* 日付プロパティの日付を YYYY-MM の文字列に変換(日の部分を強制的に1日に設定) */
prop("日付").formatDate("YYYY-MM")
 /* 作成した文字列から日付(当月1日)を作成 */
 .parseDate()
 /* その日付の1ヶ月後の日付(翌月1日)を取得 */
 .dateAdd(1, "months")
 /* その日の前日の日付を取得 */
 .dateSubtract(1, "days")

今月の最終日を得るには

こちらも日付の変わりに today() に変更するだけです。

/* today() を YYYY-MM の文字列に変換(日の部分を強制的に1日に設定) */
today().formatDate("YYYY-MM")
 /* 作成した文字列から日付を作成 */
 .parseDate()
 /* その日付の1ヶ月後の日付(翌月1日)を取得 */
 .dateAdd(1, "months")
 /* その日の前日の日付を取得 */
 .dateSubtract(1, "days")

おわりに

今回は、「月初・月末の日付を得るには?」を解説しました。parseDate で月初日が直接取得できるようになったので、Formula 1.0 の時代に比べるとかなり短く記述できるようになっています。