月、日、年、曜日とかの表示を自在にしてくれる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分」から出力します。
たとえば”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日目” |
274 | 365 – 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” |
コメント