日付の値に応じて曜日を表示したい

計算式を設定することで、日付の値に応じて曜日を表示することが可能です。

準備

計算式

文字列(1行)フィールドの設定ダイアログで「自動計算する」にチェックをつけ、以下の計算式を設定します。

IF( ( ( (日付 / 60 / 60 / 24) - 0) / 7 ) - ROUNDUP(( ( (日付 / 60 / 60 / 24) - 0) / 7 ) , 0) = 0 , "木曜",
  IF( ( ( (日付 / 60 / 60 / 24) - 1) / 7 ) - ROUNDUP(( ( (日付 / 60 / 60 / 24) - 1) / 7 ) , 0) = 0 , "金曜",
    IF( ( ( (日付 / 60 / 60 / 24) - 2) / 7 ) - ROUNDUP(( ( (日付 / 60 / 60 / 24) - 2) / 7 ) , 0) = 0 , "土曜",
      IF( ( ( (日付 / 60 / 60 / 24) - 3) / 7 ) - ROUNDUP(( ( (日付 / 60 / 60 / 24) - 3) / 7 ) , 0) = 0 , "日曜",
        IF( ( ( (日付 / 60 / 60 / 24) - 4) / 7 ) - ROUNDUP(( ( (日付 / 60 / 60 / 24) - 4) / 7 ) , 0) = 0 , "月曜",
          IF( ( ( (日付 / 60 / 60 / 24) - 5) / 7 ) - ROUNDUP(( ( (日付 / 60 / 60 / 24) - 5) / 7 ) , 0) = 0 , "火曜",
            IF( ( ( (日付 / 60 / 60 / 24) - 6) / 7 ) - ROUNDUP(( ( (日付 / 60 / 60 / 24) - 6) / 7 ) , 0) = 0 , "水曜","該当なし"
            )
          )
        )
      )
    )
  )
)

考え方

kintoneの計算式では、「日付」や「日時」の値をUNIX時刻という、1970年1月1日午前0時協定世界時(UTC)からの経過秒数で扱っています。
日付、時刻、日時フィールドの値の扱われ方

そのため、入力した日付の値を経過日数に変換して、経過日数の値を1週間の日数である「7」で割った余りの数に応じて曜日を表示する計算式を設定することで、日付の値に応じた曜日を表示することが可能となります。

例)

  • 2021年4月1日を入力した場合
    1970年1月1日(木曜日)から、18718日経過しています。
    18718を7で割ると、商が2674で余り0となります。
    これは、2021年4月1日が1970年1月1日(木曜日)から、ちょうど2674週間後にあたるということから 木曜日に該当する、という考え方です。
    つまり、入力した日付の経過日数を7で割って余りが0となる場合は木曜日に該当する、と言えます。

  • 2021年4月2日を入力した場合
    1970年1月1日(木曜日)から、18719日経過しています。
    18718を7で割ると、商が2674で余り1となります。
    これは、2021年4月2日が1970年1月1日(木曜日)から、2674週間と1日後にあたるということから金曜日に該当する、という考え方です。
    つまり、入力した日付の経過日数を7で割って余りが1となる場合は金曜日に該当する、と言えます。

上記の例の考え方から、入力した日付の経過日数の余りの値と曜日は以下の関係となります。

A)経過日数を7で割った余りが0の場合:木曜日
B)経過日数を7で割った余りが1の場合:金曜日
C)経過日数を7で割った余りが2の場合:土曜日
D)経過日数を7で割った余りが3の場合:日曜日
E)経過日数を7で割った余りが4の場合:月曜日
F)経過日数を7で割った余りが5の場合:火曜日
G)経過日数を7で割った余りが6の場合:水曜日

ただし、kintoneの計算機能では、余りを求めることはできません。
そのため、余りの値を用いない方法として以下の考え方に変換しています。

A)経過日数-0の値を7で割った余りが0の場合:木曜日
B)経過日数-1の値を7で割った余りが0の場合:金曜日
C)経過日数-2の値を7で割った余りが0の場合:土曜日
D)経過日数-3の値を7で割った余りが0の場合:日曜日
E)経過日数-4の値を7で割った余りが0の場合:月曜日
F)経過日数-5の値を7で割った余りが0の場合:火曜日
G)経過日数-6の値を7で割った余りが0の場合:水曜日

余りが発生している場合は計算結果に小数が含まれることから、上述の「A)」~「G)」の中から「7で割った値」と、「7で割った値をROUNDUP関数に読み込ませた結果」を差し引きした結果が0となる場合に、該当する曜日を表示させるようにしています。
[ROUND関数]数値を四捨五入、切り上げ、切り捨てする