🐊

[kintoneカスタマイズ] 期日の経過日数を表示させる

2023/09/30に公開

目的

期日までの残り日数を管理したい。

要件

  1. 期日を設定する日付フィールドを設ける
  2. 当日から残日数を算出する

実装

期日を変更した際、各表示イベントで期日と現在日時を比較し、経過日時を日数で算出する。
日付処理にはCybozu CDNのLuxonライブラリを使用するため、kintoneのカスタマイズファイルに下記を指定する。
https://js.cybozu.com/luxon/1.24.1/luxon.min.js

コード

kintone.js
/**
 * 残日数の計算
 */
 (function() {
    "use strict";

    /**
     * 経過年月日を計算する
     */
     const SetDuration = function(event) {
      // ① 期日を取得
      const dayValue = event.record['期日'].value;
      if(dayValue){
        const date = luxon.DateTime.fromISO(dayValue).startOf('day');

        // ② 現在日時を取得
        const currentDate = luxon.DateTime.local().startOf('day');

        // ③ 経過期間を計算する
        const duration = currentDate.diff(date, ['days']);

        // ④ 経過期間を日数で取得
        event.record['残日数'].value = duration.toObject().days;
      }

      return event;
    };

    kintone.events.on([
        'app.record.create.change.期日',
        'app.record.edit.change.期日',
        'app.record.create.show',
        'app.record.edit.show', 
        'app.record.detail.show'
    ], SetDuration);
    
})();

Discussion