2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

moment.jsで2つの日時の差分を計算する。(kintone編)

Last updated at Posted at 2020-05-21

#2つの日時の差分を計算する
##最近kintoneのカスタマイズしかしてない
最近、kintoneのカスタマイズをjsでゴリゴリ書く仕事しかしてない感じがするのですが、日時差分を取って、所定の時間を超えていたら入力欄の背景を赤くしろ、とか、黄色くしろ、とかいう話が複数あって、その度に考えていたので備忘録としてメモ。

##前提条件
kintoneでアプリをカスタマイズする際にはmoment.jsを読み込んでおくのを忘れないように。

##例えば
kintoneでタイムカードアプリを作ったとしてですね…

タイムカード.png

開始、終了、にそれぞれユーザ打刻してもらって、両方に値が入った状態で「保存」すると、「計算」欄に両者の差分時間が入る、なんてことをやりたい場合です。

###ソース例

sample.js
    // レコード保存時休憩時間計算
    kintone.events.on(["app.record.edit.submit"], function(event){
        var record = event.record;

        // 休憩開始と終了が入っていれば計算する
        if(record['休憩開始']['value'] !== undefined && record['休憩終了']['value'] !== undefined){
            const timeFrom = moment(record['休憩開始']['value']);
            const timeTo = moment(record['休憩終了']['value']);
            let result = timeTo.diff(timeFrom);
            record['休憩時間計算']['value'] = moment.utc(result).format('HH:mm');
        }
        return event;
    });

###保存時アクション
最初の

sample.js
    // レコード保存時休憩時間計算
    kintone.events.on(["app.record.edit.submit"], function(event){
    });

というのは、編集から、保存実行時の場合、というkintoneのお作法的コードですが、editなので、新規作成時はこのプログラムは動作しません。新規作成、編集時、問わず、動作させたい場合はこんな感じ。

sample.js
    // レコード保存時休憩時間計算
    kintone.events.on(["app.record.create.submit","app.record.edit.submit"], function(event){
    });

###計算

sample.js
        // 休憩開始と終了が入っていれば計算する
        if(record['休憩開始']['value'] !== undefined && record['休憩終了']['value'] !== undefined){
            const timeFrom = moment(record['休憩開始']['value']);
            const timeTo = moment(record['休憩終了']['value']);
            let result = timeTo.diff(timeFrom);
            record['休憩時間計算']['value'] = moment.utc(result).format('HH:mm');
        }

「休憩開始」と「休憩終了」に値があることを確認した上で、それぞれconst定義に詰め込んで、diffを取っているだけですね。この場合は、休憩時間の計算なので、1日跨ぎとかは仕様としてあり得ませんので、フォーマットは「HH:mm」にしてあります。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?