Angular Datepicker MinDate 延迟一天禁用

Angular Datepicker MinDate disabling one day behind

我正在使用 Angular Bootstrap 日期选择器,我正在设置 min-date 属性,如下所示:

<input type="text" class="" uib-datepicker-popup="MM/dd/yyyy" 
       show-button-bar="false" ng-model="vm.date" ng-change="vm.DateChanged()" 
       min-date="vm.minDate" date-disabled="vm.disabledDates(date,mode)" />

其中 minDate 在我的控制器中设置为:(如控制台所示)

vm.minDate = '2016-02-19'

但是,我的日历即将推出 2 月 18 日 也可用:

为什么会这样?

此日期选择器 uses the browser timezone for dates. There is an open request 提供 UTC 支持或提供某种方式来设置特定时区或更好地使用日期而不考虑时区。

由于我们还无法避免,您可以使用 UTC 日期格式解决此问题:

vm.minDate = '2016-02-19T00:00:00Z'

在此 GitHub thread, people suggests other solutions, like this one 中,通过使用时区偏移更正日期来设置使用 UTC 的指令:

ngModelCtrl.$formatters.push(function (value) {
    var date = new Date(value);

    if (isNaN(date) || (value == null)) {
        return value;  // needed for null/empty/undefined values
    }

    date.setMinutes(date.getTimezoneOffset());  // forces the "local" version of the date to match the intended UTC date

    return date;  // yes, this is a Date object being applied to the $viewValue...don't judge, it works!
});

编辑:我创建了一个Plunker来测试它。我用过的:

var date = new Date('2016-02-19');
date.setMinutes(date.getTimezoneOffset());
$scope.minDate = date;