Kintone標準機能で日付計算と曜日判定
やりたいこと
Kintoneアプリで日数計算やX日後の応当日を自動計算したい。日付の曜日判定も行いたい。これは、標準機能だけで実現可能です。
以下の「デモ画面1」では、受注日と出荷予定日の日付フィールドで出荷予定日の曜日判定と出荷日予定日までの日数計算を行っています。
デモ画面1(日数計算)
以下の「デモ画面2」では、受注日から7日後の日付を求めて曜日も判定しています。日数を変更することで、応当日も変化します。
◆日数計算について
日数計算は、終了日ー開始日の値÷(60*60*24)で求めることができます。
1日は60秒×60分×24時間だからですね。
例えばデモ画面1の出荷予定日「2023-10-27」から受注日「2023-10-20」を差引すると日数計算で7日が求められますが、Kintoneでは日付フィールド値は秒数なので604,800秒になっています。これを日数表示するためには、1日の秒数である60秒×60分×24時間=86,400秒で割り算する必要があります。
604,800秒÷86,400秒=7(日)となるわけです。
デモ画面1の日数フィールドは計算型フィールドで、設定されている計算式は以下の通りです。
IF(出荷予定日<>"",(出荷予定日-受注日)/(60*60*24),"")
IF文で出荷予定日が空白の場合は日数計算しない様にしています。
デモ画面2(応当日計算)
以下のデモ画面は、受注日+日数で出荷予定日(応当日)を計算します。
◆応当日計算について
応当日計算は、基準日+日数=応当日の計算を行います。
Kintoneの日付フィールド値は秒数なので、日数も秒数に換算してから足し算を行っています。
デモ画面2の「出荷予定日」は計算型フィールドで日付型にしています。
計算式は、受注日+(60*60*24*日数) と設定しています。
◆曜日判定について
kintone上の日付は1970年1月1日午前0時0分0秒からの経過秒数で表現されています。1970年1月1日は木曜日です。
経過日数の計算は、入力日付/(60*60*24)で求めることができます。
例えば、2023年10月20日の1970年1月1日からの経過日数は、19,650日(1,697,760,000秒)です。
経過日数を7日で割り算すると経過した週数が求められます。
週数×7日で端数を切り捨てると木曜日の出現日数が求められます。
経過日数-木曜の出現日数=0ならば、その日付は木曜、1ならば金曜、2ならば土曜、3ならば日曜となります。
以上の計算ロジックを数式で表すと以下の通りとなります。
IF((ROUNDDOWN(日付 / (60 * 60 * 24)) - (ROUNDDOWN((日付 / (60 * 60 * 24)) / 7) * 7)) = 0,"木曜日",
IF((ROUNDDOWN(日付 / (60 * 60 * 24)) - (ROUNDDOWN((日付 / (60 * 60 * 24)) / 7) * 7)) = 1,"金曜日",
IF((ROUNDDOWN(日付 / (60 * 60 * 24)) - (ROUNDDOWN((日付 / (60 * 60 * 24)) / 7) * 7)) = 2,"土曜日",
IF((ROUNDDOWN(日付 / (60 * 60 * 24)) - (ROUNDDOWN((日付 / (60 * 60 * 24)) / 7) * 7)) = 3,"日曜日",
IF((ROUNDDOWN(日付 / (60 * 60 * 24)) - (ROUNDDOWN((日付 / (60 * 60 * 24)) / 7) * 7)) = 4,"月曜日",
IF((ROUNDDOWN(日付 / (60 * 60 * 24)) - (ROUNDDOWN((日付 / (60 * 60 * 24)) / 7) * 7)) = 5,"火曜日", "水曜日")
)
)
)
)
)
上記の数式を、文字1行の型フィールドを自動計算にして、計算式に貼り付ければ、曜日を計算する計算式になります。
「日付」の部分は、曜日判定したい日付フィールドのフィールドコード名と合わせておく必要があります。
Kintoneの日付型フィールドは、コツさえつかめば色々な計算式に応用できますので、この記事の事例を活用してみて下さい。
よろしければサポートお願いします! いただいたサポートは、note記事制作の活動費に使わせていただきます!