2016-05-23 2 views
1

Я пытаюсь вычислить количество рабочих часов в месяц для отображения на моем сайте. Мне удалось выяснить, как получить дни для показа, но просто получить часы для разных месяцев, учитывая, что некоторые месяцы имеют 31,30 и 28/29 дней.Как рассчитать количество рабочих часов в месяц?

function getBusinessDatesCount(startDate, endDate) { 
    var count = 0; 
    var curDate = startDate; 
    while (curDate <= endDate) { 
     var dayOfWeek = curDate.getDay(); 
     if(!((dayOfWeek == 6) || (dayOfWeek == 0))) 
      count++; 
     curDate.setDate(curDate.getDate() + 1); 
    } 
    return count; 
} 

Использование:

var startDate = new Date('7/01/2015'); 
var endDate = new Date('7/31/2015'); 
var numOfDates = getBusinessDatesCount(startDate,endDate); 
$('div#result').text(numOfDates); 
+0

Вам нужно учитывать праздничные дни, если вы хотите получить точное количество часов работы. И кроме того, все, что вам нужно в приведенном выше коде, состоит в том, чтобы умножить количество рабочих дней на часы, отработанные за день (если это тоже переменная, вам придется вычислять это для каждого дня) – dinotom

+0

Это на самом деле не дает прямого ответа на ваш вопрос, но, вероятно, стоит взглянуть на библиотеку https://date-fns.org, чтобы узнать, какая часть этой проблемы уже решена для вас. –

ответ

0

Поскольку ваша функция уже дает вам счет рабочего дня, вам просто нужно умножить это с количеством рабочих часов.

function getBusinessDatesCount(startDate, endDate) { 
    var count = 0; 
    var curDate = startDate; 
    while (curDate <= endDate) { 
     var dayOfWeek = curDate.getDay(); 
     if(!((dayOfWeek == 6) || (dayOfWeek == 0))) 
      count++; 
     curDate.setDate(curDate.getDate() + 1); 
    } 
    return count; 
} 

Учитывая, что эта функция вернет вам правильное количество дней. вы можете просто умножить количество часов в вашей стране.

Если требуется какая-либо еще. Прошу прокомментировать, я попытаюсь помочь вам в этом.

+0

Я должен показать общее количество рабочих часов на каждый месяц. Таким образом, в первый месяц каждого месяца он должен измениться на месяц. – Steven

+0

на самом деле было бы идеально, если бы я мог просто отобразить его в текущем месяце – Steven

0

взгляд на this ссылку. Это дает неделю в месяц, просто подсчитывает рабочий день, который отличается от страны к стране, я думаю. Как и в Австралии, мы получили 5 рабочих дней в неделю оттуда, и можем умножить ее на часы работы.

Смежные вопросы