時間を計算してカスタマイズビューで表示

お世話になっております。

タイトルの件について「kintone Utility Library for JavaScript」を使用し、各レコードの時間の値を計算してカスタマイズビューに表示しようと考えております。

各レコードの項目(文字列)には時間1,時間2とあり、値には登録画面でmoment.duration()を使用してミリ秒の値が登録されております。

現在下記コードで設定していますが、

(function () {
    'use strict';
    kintone.events.on("app.record.index.show", function (event) {
        /*button作成jsを省略しています*/
        $("#button").click(function(){
            /*param_query条件jsを省略しています*/
            var param = {
            app: kintone.app.getId(), query: param_query, totalCount: true, isGuest: false
            };
            var sum = function(arr, fn) {
            if (fn) {return sum(arr.map(fn));}
            else {return arr.reduce(function(prev, current, i, arr) {return prev+current;});}
            };
            kintoneUtility.rest.getAllRecordsByQuery(param).then(function(resp) {
                var arr_time1 = [];
                var time1 = resp.records.filter(function(data){ return data.時間1.value > 0;});
                for (var i = 0; i < time1.length; i++) { arr_time1 += time1[i]['時間1']['value'];}
                $("#time1").html(arr_time1);
                var arr_time2 = [];
                var time2 = resp.records.filter(function(data){ return data.時間2.value > 0;});
                for (var i = 0; i < time2.length; i++) { arr_time2 += time2[i]['時間2']['value'];}
                $("#time2").html(arr_time2);
                $("#time3").html(sum(arr_time1, arr_time2));
            }).catch(function(error){window.alert(error.message);});
        });
    });
})();

各レコードの下記の値があった場合

「3600000」※1時間、「1800000」※30分

「36000001800000」と表示されます。

これを「5400000」と値を足して、1時間30分と表示させるにはどのように設定すればよろしいでしょうか。

お手数でございますが、ご教授いただければ幸いです。

よろしくお願いいたします。

Nao様

お世話になっております。 cstapの江田です。

やりたいこととあっているか分かりませんが、こちらで試していただけますか?

(function(){'use strict';kintone.events.on("app.record.index.show",function(event){/\*button作成jsを省略しています\*/$("#button").click(function(){/\*param\_query条件jsを省略しています\*/varparam={app:kintone.app.getId(),query:param\_query,totalCount:true,isGuest:false};varsum=function(arr,fn){if(fn){returnsum(arr.map(fn));}else{returnarr.reduce(function(prev,current,i,arr){returnprev+current;});}};kintoneUtility.rest.getAllRecordsByQuery(param).then(function(resp){vararr\_time1=0;vartime1=resp.records.filter(function(data){returndata.時間1.value\>0;});for(vari=0;i\<time1.length;i++){arr\_time1+=parseInt(time1[i]['時間1']['value']);}$("#time1").html(arr\_time1);vararr\_time2=0;vartime2=resp.records.filter(function(data){returndata.時間2.value\>0;});for(vari=0;i\<time2.length;i++){arr\_time2+=parseInt(time2[i]['時間2']['value']);}$("#time2").html(arr\_time2);$("#time3").html(sum(arr\_time1,arr\_time2));}).catch(function(error){window.alert(error.message);});});});})();

江田篤史様

ご返信ありがとうございます。

ご教授いただいたように設定し、値の計算が出来ました。

ありがとうございます。

恐縮ですが、あと1つ確認したいことがあります。

「3600000」※1時間、「1800000」※30分

上記の2つの値を足して現在「5400000」のように表示されていますが、

こちらを「1時間30分」のような表示をするには

「5400000」この値に「時は/3600、分は/3600/60」のように

計算する方法しかありませんでしょうか。

例えば、Moment.js等を使用してformat(hh時mm分)のような方法はありますでしょうか。

お手数でございますが、ご教授いただければ幸いでございます。

よろしくお願いいたします。

 

Nao様

Moment.jsのformatで表示できるかと思います。

時差の関係上、utcモードで利用するがよいと思います。

var a = moment.utc(5400000);
console.log(a.format('HH時間mm分')); // => 01時間30分

江田篤史様

ご返信ありがとうございます。

確認が遅くなり、申し訳ございません。

ご教授いただいたように設定し、表示フォーマットの変更ができました。

ありがとうございます。

今後ともよろしくお願いいたします。