محاسبه اختلاف بین دو تاریخ در پاورفرم – شیرپوینت

برای محاسبه ی اختلاف بین دو تاریخ در پاورفرم می توانید از کد زیر استفاده کنید.

توجه داشته باشید که دو تاریخ شروع  و پایان را می توانید به صورت دو کنترل در نظر بگیرید یا حتی دو ستون از یک 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);