【Notionの使い方】formatDate関数についてのまとめ

Notionの関数

月、日、年、曜日とかの表示を自在にしてくれるformatDate関数です。

month関数で数字が合わなかったりするコトがあるので重宝してます。

formatDate関数の場所等

データベースのプロパティ内で利用します。

こちらのFomulaを選ぶと関数が入力できるようになります。

プロパティが「Fomula」になったら、Edit propertyからEditを選択。
すると関数の入力画面になります。

formatDateと打ち込むか、左側のバーに項目があるので選択します。

formatDate関数の書き方

formatDate( 変換したい対象 , “出力したい形式” )

変換したい対象を”で囲むかは、内容によります。少し↓で。
出力したい形式は””で囲みます。

変換したい対象は
・列を指定する
・now()から表示する
等があります。

変換したい対象に列の内容を指定する場合

列の内容を指定するので、prop()で囲みます。

〇 formatDate(prop(“列の名前”),”M”)
× formatDate(“列の名前”,”M”)

now()等の関数を指定する場合

関数の値を参照するので、prop()は不要です。

〇 formatDate(now(),”M”)
× formatDate(prop(now()),”M”)

formatDate関数でのよくあるエラー:Type mismatch ____ is not a Date

選んだ列が日付のデータじゃない場合は
Type mismatch ____ is not a Date とエラー表示されます。
このエラーが出てるときは「日付って認識されてないな」って思ってください。

よくあるのは列を指定したい時に、prop()で囲っていないことです。
その場合は囲ってあげてください。

formatDate関数でのよくあるエラー:Invalid property reference: now()

「プロパティ参照が無効です」という意味です。
関数の結果を見たいのにprop()で囲っているので見られないのです。

よくあるのは関数が対象なのに、propで囲ってしまっていることです。
その場合はprop()を消してください。

formatDate関数でのよくあるエラー:Undefined constant: __

出力形式を””で囲っていない

〇 formatDate(now(), ”M”)
× formatDate(now(), M)

formatDate関数の出力形式一覧

例はnow()で「2023年4月1日土曜日PM8時50分」から出力します。

point!

・大文字、小文字も影響する
・半角

たとえば”Y”なら2023と表示されますが、”y”ならyと表示されます。

現在の日時から変換する場合は「formatDate(now(),___)」の下線部に入れてください。
特定の列から変換する場合は now() を prop(“列名”) に変更してください。

一部、達成するのに式を組むのが必要になる場合は、式全てを記載しましたので、そのまま張り付けてください。
now()からの変換で書いています。
特定の列から変換する場合は、同じく now() を prop(“列名”) に変更してください。

年、月、日をまとめて出したい場合

小文字でmとかdになると別項目になるのでご注意

表示したい内容入力内容
2023年4月“YYYY年M月”
2023年4月1日“YYYY年M月D日”
2023年4月1日Sat“YYYY年M月D日ddd”
2023年4月1日 (土)replace(replace(replace(replace(replace(replace(replace(formatDate(now(), “YYYY年M月D日ddd”), “Sat”, “(土)”), “Sun”, “(日)”), “Mon”, “(月)”), “Tue”, “(火”), “Wed”, “(水)”), “Thu”, “(木)”), “Fri”, “(金)”)
2023年4月1日Sat 20時“YYYY年M月D日ddd HH時”
2023年4月1日Sat 20時50分“YYYY年M月D日ddd HH時MM分”

ややこしく組まなくてもサクッと表示できるパラメータ

表示したい内容入力内容
04/01/2023“L”
4/1/2023“l”
April 1, 2023“LL”
1-Apr-23“ll”
April 1, 2023 11:11 AM“LLL”
2023/4/1 11:11“lll”
Saturday, April 1, 2023 11:11 AM“LLLL”
Sat, Apr 1, 2023 11:11 AM“llll”

西暦、和暦で何年かを表示したい場合

和暦はパラメターがないので関数で調整が必要です。
西暦から2018を引いて文字列を付けてます。
・concatは文字列同士が条件→formatで文字列に変更
・引き算は数字同士が条件→toNumberで2023を数字に変換
とやってます。もっと効率いいやり方がどっかにあるかも。

表示したい内容入力内容
2023“Y”
23“YY”
2023年“Y年”
令和5年concat(“令和”, format(toNumber(formatDate(now(), “Y”))-2018), “年”)

4半期を表示したい場合

表示したい内容入力内容
2“Q”
2nd“Qo”
02“QQ”
第2四半期第Q四半期”

月だけを表示したい場合

表示したい内容入力内容
4“M”
4th“Mo”
04“MM”
Apr“MMM”
April“MMMM”
4月“M月”

1年の何週目かを表示したい場合(大文字だとISO準拠)

表示したい内容入力内容
13“w”
13th“wo”
13“ww”
13週目“w週目”

1年が始まって何日目か、今年はあと何日あるかを表示したい場合

274は今年の残り日数。そのまま張り付けてください。

表示したい内容入力内容
91“DDD”
91st“DDDo”
091“DDDD”
91日目“DDD日目”
274365 – toNumber(formatDate(now(), “DDD”))
今年はあと274日concat(“今年はあと”, format(365 – toNumber(formatDate(now(), “DDD”))), “日”)

月の何日目かを表示したい場合

表示したい内容入力内容
1“D”
1st“Do”
01“DD”
1日“D日”

週の何日目かを表示したい場合(月曜日スタート)

表示したい内容入力内容
6“d”
6th“do”

曜日を表示したい場合

表示したい内容入力内容
Sa“dd”
Sat“ddd”
Saturday“dddd”
(土)replace(replace(replace(replace(replace(replace(replace(formatDate(now(), “ddd”), “Sat”, “(土)”), “Sun”, “(日)”), “Mon”, “(月)”), “Tue”, “(火”), “Wed”, “(水)”), “Thu”, “(木)”), “Fri”, “(金)”)

AM、PM、午前、午後を表示したい場合

午前、午後としたい場合はパラメータが2個しかないので、ifでの切り替えがカンタン

表示したい内容入力内容
PM“A”
pm“a”
午後if(formatDate(now(),”A”) == “AM”,”午前”,”午後”)

12時間表記、24時間表記で時間を表示したい場合

表示したい内容入力内容
20“H”0時から23時を1桁で表します。
20“HH”0時から23時を2桁で表します。
8“h”1時から12時を1桁で表します。
08“hh”1時から12時を2桁で表します。
20“k”1時から24時を1桁で表します。
20“kk”1時から24時を2桁で表します。

分を表示したい場合

表示したい内容入力内容
50“m”
50“mm”
50分“m分”

タイムゾーンを表示したい場合

表示したい内容入力内容
+09:00“Z”
900“ZZ”
GMT+09:00“ZZZ”

コメント