我有两个工作时间配置了1个SLA和其他用于OLA计算。
尽管两个营业时间都配置为9小时,但代码仍未正确计算值。对于第一个工作小时,它计算106小时,而另一个工作小时计算108小时,为什么?我已经分享了以下代码以供参考
Date startDate = Date.today(); // 9/18/2017
Date endDate = Date.today().addDays(16); // 10/4/2017
BusinessHours bh = [SELECT Id,Name,IsActive,IsDefault,MondayEndTime,MondayStartTime
FROM BusinessHours
WHERE Name = 'SLA Hours'];
Datetime startTime = Datetime.newInstance(startDate.year(), startDate.month(), startDate.day());
Datetime endTime = Datetime.newInstance(endDate.year(), endDate.month(), endDate.day());
System.debug('START_TIME :: '+startTime);
System.debug('END_TIME :: '+endTime);
// API to calculate the business hours difference
Long difference = BusinessHours.diff(bh.Id, startDate, endDate);
// calculate the minutes from Milisecond value
Integer diffInminutes = Integer.valueOf(difference / (1000*60));
System.debug('DIFF IN HOURS :: '+diffInminutes/60);
这是另一个输出
然后
答案 0 :(得分:0)
首先,“营业时间”屏幕截图中的时区是不同的。 其次,您在本地时区中构建您的日期时间,如您的用户记录所设置,不确定是什么。
请查看Apex开发指南中的Support Classes页面,其中提供了有关如何使用营业时间的示例。