時刻の差を計算する
独自に時刻の差を算出するサンプルをご紹介します。
サンプルについて
本サンプルのソースコードについてや、カスタマイズ方法等の技術的なお問合せは承っておりません。
動作イメージ

利用するイベント
パーツ値変更イベント
詳しくは、利用可能な画面、イベントの一覧をご確認ください。
サンプルフォーム
サンプルで利用するフォームには、以下のパーツを配置しています。
パーツID | パーツタイプ | 補足 |
fidTime1 | 時刻パーツ | 時刻1 |
fidTime2 | 時刻パーツ | 時刻2 |
fidTimeDiff | 時刻パーツ | 時刻の差。経路で編集不可に設定 |
カスタマイズコード
カスタマイズコード(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. 時刻の差が算出されます。