我正在使用Angular Bootstrap Datepicker,我设置了这样的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日:
为什么会这样?
答案 0 :(得分:2)
此日期选择器uses the browser timezone for dates。有an open request提供UTC支持或提供某种方式来设置特定时区甚至更好,使用日期而不考虑时区。
由于我们还不能做到这一点,你可以使用UTC日期格式来解决这个问题:
vm.minDate = '2016-02-19T00:00:00Z'
在这个GitHub thread中,人们建议使用其他解决方案,例如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;