根据当天计算不同时间的时间?

时间:2013-03-12 10:53:38

标签: excel

我正在计算从X日期到今天的日期已经过了多少“小时数”。考虑到一天24小时,这很简单,但是我需要在每个工作日以不同的小时数来计算。

我只需计算星期一至星期五0600至2000,星期六0600至1800和星期日0900至1700之间的小时数。 银行假期0900至1730,圣诞节和节礼日除外。

例如,如果日期是27/02/2013 12:00:00,那么大约有9个工作日,2个星期六和2个星期日。因此,这将使总数达到(假设日期为12/03/2013 12:00):166小时(126 + 24 + 16),相当于3.9“期间”

这有意义吗?

编辑:我实际上可以简单地通过说出日期,弄清楚自上述日期以来有多少个工作日,星期六,星期日和银行假期,然后减去刚刚提到的天数乘以的小时数?

2 个答案:

答案 0 :(得分:0)

我不知道你的意思是什么时期,但如果你想要时间,这样的事情应该做:

//NOTE: Adjust the order to match the rules priorities
float hoursOfDay(Date d) {
    if (isHoliday(d))
        return 8.5;
    elsif (isRegular(d))
        return 14;
    elsif (isSaturday(d))
        return ;
    elsif (isSunday(d))
    ...         
}

函数只是检查日期类型(根据语言,这些函数应该已经存在)     isSaturday(d)= d.dayOftheWeek == DayOfTheWeek.SUNDAY

然后,你只需要迭代它们:

DateTime d1;
DateTime d2;
//NOTE: according to language, d2-d1 is a timespan object
float hours = 0;
for (Date d: d2-d1)
    hours+=hoursOfDay(d);

convertHoursToPeriods(hours);

答案 1 :(得分:0)

使用不同的方法计算出来。计算日期之间的天数,并乘以小时数差

B2是今天的日期,C8是开始日期。

<强>平日

  

= SUM(INT((WEEKDAY(C8- {2,3,4,5,6})+ $ B $ 2-C8)/ 7))

<强>星期六

  

= SUM(INT((WEEKDAY(C8-7)+ $ B $ 2-C8)/ 7))

<强>星期日

  

= SUM(INT((WEEKDAY(C8-1)+ $ B $ 2-C8)/ 7))

然后我可以计算出在工作日,我想要计算14个小时。因此,工作日数字乘以14可以得到我想要的数字。重复其他日子:)