時刻の差を計算する

独自に時刻の差を算出するサンプルをご紹介します。

サンプルについて

本サンプルのソースコードについてや、カスタマイズ方法等の技術的なお問合せは承っておりません。

動作イメージ


利用するイベント
パーツ値変更イベント
詳しくは、利用可能な画面、イベントの一覧をご確認ください。

サンプルフォーム

サンプルで利用するフォームには、以下のパーツを配置しています。

パーツID

パーツタイプ

補足

fidTime1

時刻パーツ

時刻1

fidTime2

時刻パーツ

時刻2

fidTimeDiff

時刻パーツ

時刻の差。経路で編集不可に設定


カスタマイズコード
カスタマイズコード
Copied!
(function () {
'use strict';

collaboflow.events.on(['request.input.fidTime1.change', 'request.input.fidTime2.change'], function (e) {

const parts = e.parts;
const resultParts = parts['fidTimeDiff'];

// 時刻1、時刻2それぞれの値を取得します。
const time1text = parts['fidTime1'].value;
const time2text = parts['fidTime2'].value;

// 入力値が不足している状態では差となる時間数をクリアします。
if(time1text.length < 3 || time2text.length < 3){
resultParts.value = '00:00';
return;
}

// 時刻パーツの値は "12:34" 形式の文字列です。":"で分割して時間と分を取得します。
const time1 = time1text.split(':');
const time2 = time2text.split(':');

// Dateオブジェクトを生成して、差となる時間を計算します。
const time1Date = new Date(0, 0, 0, time1[0], time1[1], 0);
const time2Date = new Date(0, 0, 0, time2[0], time2[1], 0);

// 時刻の差を秒数で求めます。
let diffSeconds = (time1Date - time2Date) / 1000;

// 秒数がマイナスだった場合は符号を反転します。
if(diffSeconds < 0){
diffSeconds = -diffSeconds;
}

// 時間数と分数をそれぞれ求めます。
const hour = Math.floor(diffSeconds / 3600);
const minute = Math.floor(diffSeconds % 3600 / 60);

// 結果を代入します。
resultParts.value = hour + ":" + minute;
});
})();

動作の確認手順

1. サンプルのカスタマイズコードをjsファイルに保存します。
2. アプリ設定>フォーム設定から新規に通常フォームを作成します。
3. サンプルフォームに、先で記載されている必要な項目を配置します。
4. サンプルフォームを再度表示し、カスタマイズタブを表示します。
5. 保存したファイルをアップロードします。
6. アプリ設定>経路設定から新規に経路を作成します。
7. 申請時の設定で、時刻の差の編集を不可にします。
8. 新規文書から、作成した経路名をクリックします。
9. 時刻1と時刻2に任意に時刻を入力します。
10. 時刻の差が算出されます。