parseDate: Notion Formula 解説 (7)

はじめに

Notion Formula の第7回目ではテキストを日付に変換する parseDate メソッドを確認します。すでに逆引き Formula のページに関数説明があるので、このページを見ながら解説していきます。

parseDate

文法

説明には「ISO8601標準に従って解析された日付を返します。」とあります。使い方は以下のようになります。これは、Formula 2.0 から実装された関数・メソッドで、これにより日付を作成することが非常に簡単になりました。特に最後に解説する数値での日付作成はかなり便利です。

prop("str").parseDate()

ISO8601標準

ISO8601標準には「基本形式」と「拡張形式」の二つがあります。拡張形式はほとんどの言語でサポートされていますが、基本形式に対応している言語は少ないそうです。Notion の parseDate はどちらの形式もサポートしていました。Notion API などで返却される時刻フォーマットは、拡張形式になっています。

形式 サンプル
基本形式 20240503T170344+0900
拡張形式 2024-05-03T17:03:44+09:00

年・年月・年月日

日付が返ってくるパターンです。結果は以下のようになります。出力されるものは時刻が含まれない日付型になります。

年・年月・年月日

時刻付き

Tの後ろに時間を24時制で記述すると時刻まで設定されます。分までは Notion で対応していますが、Notion のデータベースに秒は記録されないため、何を設定しても 00 になります。また、時刻を設定しても 0:00 の場合には、日付型になってしまうため注意が必要です。

時刻付き

タイムゾーン付き

タイムゾーンを設定しない場合には、自動的にローカルのタイムゾーンになります。別のタイムゾーンで設定する場合には、タイムゾーン情報を後ろに追加します。Z は GMT の省略形です。それ以外は時差で記述します。設定は指定したタイムゾーンの時刻ですが、表示はローカルタイムになります。なお、別のタイムゾーンで時刻が入っていても、ローカルタイムで 0:00 なら日付型になってしまいます。

タイムゾーン付き

週番号・日番号

年と週番号を指定すると、その週の月曜日の日付が設定されます。さらに曜日番号(1-7)を指定すると指定された曜日の日付まで設定できます。また、三桁の数値を指定すると日番号を指定したことになり、1月1日からの通番の日番号で日付が設定できます。

週番号・日番号

数値での指定

記号が含まれない基本形式だけの対応になりますが、先日解説した暗黙の format により数値から日付を作成することができます。これにより、年を示す数値 y , 月を示す数値 m, 日を示す数値 d, 日番号を示す数値 d_y などの数値から以下のような計算をすることで日付が簡単に作成できます。

  1. 年だけ: y
  2. 年月: 100 * y + m
  3. 年月日: 10000 * y + 100 * m + d
  4. 年と日番号: 1000 * y + d_y
    数値での指定

おわりに

日付を作成する逆引きはほとんど parseDate で記述できるようになりました。非常に便利に活用しています。特に時間がない日付だけの作成では、最後の数値での指定が非常に便利だと思います。