moment.jsで2つの日時の差分を計算する。(kintone編)
2つの日時の差分を計算する
最近kintoneのカスタマイズしかしてない
最近、kintoneのカスタマイズをjsでゴリゴリ書く仕事しかしてない感じがするのですが、日時差分を取って、所定の時間を超えていたら入力欄の背景を赤くしろ、とか、黄色くしろ、とかいう話が複数あって、その度に考えていたので備忘録としてメモ。
前提条件
kintoneでアプリをカスタマイズする際にはmoment.jsを読み込んでおくのを忘れないように。
例えば
kintoneでタイムカードアプリを作ったとしてですね…
開始、終了、にそれぞれユーザ打刻してもらって、両方に値が入った状態で「保存」すると、「計算」欄に両者の差分時間が入る、なんてことをやりたい場合です。
ソース例
// レコード保存時休憩時間計算
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;
});
保存時アクション
最初の
// レコード保存時休憩時間計算
kintone.events.on(["app.record.edit.submit"], function(event){
});
というのは、編集から、保存実行時の場合、というkintoneのお作法的コードですが、editなので、新規作成時はこのプログラムは動作しません。新規作成、編集時、問わず、動作させたい場合はこんな感じ。
// レコード保存時休憩時間計算
kintone.events.on(["app.record.create.submit","app.record.edit.submit"], function(event){
});
計算
// 休憩開始と終了が入っていれば計算する
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」にしてあります。
Author And Source
この問題について(moment.jsで2つの日時の差分を計算する。(kintone編)), 我々は、より多くの情報をここで見つけました https://qiita.com/saitohsan/items/d218605701baea60d899著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .