如何选择带日期选择器的周

时间:2015-07-16 20:30:21

标签: angularjs angular-ui-bootstrap

我正在使用angular bootstrap datepicker。我只有一个日期选择器,需要选择一周(星期日到星期六)而不是星期几

为前,

  1. 从弹出日历中选择周期。

  2. 选择周期 2015年7月19日至2015年7月25日

  3. 此输出为07/19/2015至2015年7月25日

  4. 在jQuery中,我知道该怎么做,jQuery weekpicker 。我很好奇如何使用AngularJS

    选择周

    如果有任何帮助,我将不胜感激。

    感谢。

2 个答案:

答案 0 :(得分:7)

从日期选择器计算一周,您可以尝试这一个

 $('#date').datepicker({onSelect: function() {
        var mon = $(this).datepicker('getDate');
        mon.setDate(mon.getDate() + 1 - (mon.getDay() || 7));
        var sun = new Date(mon.getTime());
        sun.setDate(sun.getDate() + 6);
        alert(mon + ' ' + sun);
}});

请参阅此链接 - https://forum.jquery.com/topic/datepicker-select-week

答案 1 :(得分:1)

感谢Afroza Yasmin: - )

最后,我明白了

请参阅来源How the select week with pick viewer

    angular.module('app', ['ui.bootstrap']).controller("BodyCtrl", function($scope) { $scope.formData = {};  $scope.data = {};$scope.dateOptions = {
    formatYear: 'yy',
    startingDay: 0,
    showWeeks:'false'};$scope.$watch('formData.dueDate',function(dateVal){
        var weekYear = getWeekNumber(dateVal);
        var year = weekYear[0];
        var week = weekYear[1];

        if(angular.isDefined(week) && angular.isDefined(year)){
            var startDate = getStartDateOfWeek(week, year);
        }
        var weekPeriod = getStartDateOfWeek(week, year);
        if(weekPeriod[0] != 'NaN/NaN/NaN' && weekPeriod[1] != 'NaN/NaN/NaN'){
            $scope.formData.dueDate = weekPeriod[0] + " to "+ weekPeriod[1];
        }

    });

    function getStartDateOfWeek(w, y) {
        var simple = new Date(y, 0, 1 + (w - 1) * 7);
        var dow = simple.getDay();
        var ISOweekStart = simple;
        if (dow <= 4)
            ISOweekStart.setDate(simple.getDate() - simple.getDay());
        else
            ISOweekStart.setDate(simple.getDate() + 7 - simple.getDay());

        var ISOweekEnd = new Date(ISOweekStart);
        ISOweekEnd.setDate(ISOweekEnd.getDate() + 6);

        ISOweekStart = ISOweekStart.getDate()+'/'+(ISOweekStart.getMonth()+1)+'/'+ISOweekStart.getFullYear();
        ISOweekEnd = ISOweekEnd.getDate()+'/'+(ISOweekEnd.getMonth()+1)+'/'+ISOweekEnd.getFullYear();
        return [ISOweekStart, ISOweekEnd];
    }

    function getWeekNumber(d) {
        d = new Date(+d);
        d.setHours(0,0,0);
        d.setDate(d.getDate() + 4 - (d.getDay()||7));
        var yearStart = new Date(d.getFullYear(),0,1);
        var weekNo = Math.ceil(( ( (d - yearStart) / 86400000) + 1)/7);
        return [d.getFullYear(), weekNo];
    }
});   

全部谢谢