برای محاسبه ی اختلاف بین دو تاریخ در پاورفرم می توانید از کد زیر استفاده کنید.
توجه داشته باشید که دو تاریخ شروع و پایان را می توانید به صورت دو کنترل در نظر بگیرید یا حتی دو ستون از یک DataEntryGrid که از جنس تاریخ و زمان هستند، در نظر بگیرید.
form = ALL_FORMS[0].Form.FormTemplate; From = form.GetControl(“c_From”).GetValue() ; To = form.GetControl(“c_To”).GetValue() ; var startDate = new Date(From) ; var endDate = new Date(To); var timeDiff = Math.abs(startDate – endDate); var hh = Math.floor(timeDiff / 1000 / 60 / 60); if(hh < 10) { hh = ‘0’ + hh; } timeDiff -= hh * 1000 * 60 * 60; var mm = Math.floor(timeDiff / 1000 / 60); if(mm < 10) { mm = ‘0’ + mm; } timeDiff -= mm * 1000 * 60; var ss = Math.floor(timeDiff / 1000); if(ss < 10) { ss = ‘0’ + ss; } H_M = hh + “:” + mm + “:” + ss form.GetControl(“txt_Duration”).SetValue(H_M); |
محاسبه اختلاف ساعت
همچنین برای محاسبه ی اختلاف دو ساعت در یک گرید از کد زیر استفاده کنید و در انتها مجموع این اختلاف ساعات را نیز در یک فیلد خارج از گرید نمایش دهید:
form = ALL_FORMS[0].Form.FormTemplate; gridItems = form.GetControl(“dg_Details”).InputControl.GetAllItems(); var SumHours = 0 ; var sumMins = 0 ; for (var i=0; i < gridItems.length; i++){ start = gridItems[i].From; end = gridItems[i].To; start = start.split(“:”); end = end.split(“:”); var startDate = new Date(0, 0, 0, start[0], start[1], 0); var endDate = new Date(0, 0, 0, end[0], end[1], 0); var diff = endDate.getTime() – startDate.getTime(); var hours = Math.floor(diff / 1000 / 60 / 60); diff -= hours * 1000 * 60 * 60; var minutes = Math.floor(diff / 1000 / 60); // If using time pickers with 24 hours format, add the below line get exact hours if (hours < 0) hours = hours + 24; (hours <= 9 ? “0” : “”) + hours + “:” + (minutes <= 9 ? “0” : “”) + minutes; itemEach = gridItems[i] ; itemEach.SetValue(‘Sum’ , hours + “:” + minutes); SumHours += hours ; sumMins += minutes ; } SumHours = parseInt(SumHours + sumMins/60); sumMins = sumMins%60; form.GetControl(“c_SumTimes”).SetValue(SumHours + “:” + sumMins); |