Momentjs / Angularjs-检查两个日期是否在同一时间段-TimeSheet项目

时间:2018-06-25 17:48:43

标签: javascript arrays angularjs momentjs

我正在开发一个简单的时间表应用程序,我正在尝试实现一个自动计算器,该计算器将汇总您每天(星期日,星期一,星期二等)的工作时间。我注意到的一个问题是,在某些情况下,用户将输入在同一日期时间段内的活动。

例如:

$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个小时,因为我们不会在同一小时内收取工作费用。我需要实现一个系统,该系统可以检查日期是否在同一时期内并提供适当的总数。

我在momentjs的文档中发现了这一点,它似乎与我需要的东西很接近,但是只有一个值:

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

有人会知道其他方法来检查开始时间和结束时间是否与同一天的其他条目处于同一时间段吗?

1 个答案:

答案 0 :(得分:1)

当然,您可以使用momentjs的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