Momentjs / Angularjs - Проверка наличия двух дат в одном и том же периоде - проект расписания - PullRequest
0 голосов
/ 25 июня 2018

Я работаю над простым приложением Расписания, я пытаюсь внедрить автоматический калькулятор, который будет подытоживать ваши часы за каждый день (воскресенье, понедельник, вторник и т. Д.).Проблема, которую я заметил, заключается в том, что в некоторых случаях пользователи будут вводить действия, которые будут находиться в пределах одного и того же периода времени даты.

Например:

$scope.Example = [
{Description:"Example activity",Start:"2018-06-24 8:00",End:"2018-06-24 10:00",Total:2},
{Description:"Example activity2",Start:"2018-06-24 9:00",End:"2018-06-24 10:00",Total:1},
{Description:"Example activity3",Start:"2018-06-24 10:00",End:"2018-06-24 11:00",Total:1}];

$scope.Calculate_all_entries = function(){

    $scope.Total.Sunday = 0;

    if($scope.Example){

        angular.forEach($scope.Example, function(element){

            if(moment(element.Start).format("dddd") === "Sunday"){

                $scope.Total.Sunday = $scope.Total.Sunday + element.Total;

            }

        })

    }

}

В этом случае общее число должно быть 3часов, а не 4 часа, так как мы не берем плату за работу в те же часы.Мне нужно внедрить систему, которая проверила бы, совпадают ли даты в том же периоде, и предоставила бы соответствующую сумму.

Я нашел это в документации по моментам, которая, казалось, была близка к тому, что мне нужно, но принимала только одно значение:

moment('2010-10-19 11:00').isBetween('2010-10-19 10:00', '2010-10-25 00:00'); // true

Кто-нибудь знает о каких-либо других методах проверки, нет или нетвремя начала и окончания совпадает с другими записями в тот же день?

1 Ответ

0 голосов
/ 26 июня 2018

Конечно, вы можете использовать функцию момента (unix ()) для преобразования этих дат в целое число, которое затем можно легко использовать для проверки, находится ли временная метка между двумя другими временными метками.

Вот пример:

var timeToCheck = moment('2010-10-19 11:00').unix();
var startTime = moment('2010-10-19 10:00').unix();
var endTime = moment('2010-10-25 00:00').unix();
console.log(timeToCheck >= startTime && timeToCheck <= endTime); // true
...