我正在使用angularjs bootstrap datepicker directive 当我从模型中设置日期时,它会在所选日期前一天选择。
<button type="button" class="btn btn-sm btn-default" ng-click="dt = '2014-09-24'">2014-09-24</button>
这是plunk的问题。
有没有解决方案?
答案 0 :(得分:10)
对于需要.NET Web Api世界解决方案的人来说,这条线对我来说效果很好:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Local;
这是由于JsonFormatter在错误的时区吐出时间。
答案 1 :(得分:1)
我的解决方案是使用指令来修复减1问题,并使用格式化视图和模型值:
app.directive('ngBootstrapFix',['$filter', function($filter) {
return {
require: 'ngModel',
priority: 1,
link: function($scope, $element, $attrs, ngModelCtrl) {
ngModelCtrl.$parsers.push(function(viewValue) {
viewValue = $filter('date')(viewValue, 'yyyy-MM-dd');
return viewValue;
});
ngModelCtrl.$render = function() {
var val = $filter('date')(ngModelCtrl.$viewValue, 'dd/MM/yyyy');
$element.val(val);
};
}
};
}]);
答案 2 :(得分:0)
这是由于JS本身处理日期的方式。 AngularUI团队在文档中提到了这一点。
以下是一个解决方案:Angular-UI One day is subtracted from date in ui-date
答案 3 :(得分:0)
我刚用新的Date()初始化了ngModel,之后日期设置正确,即使我用日期选择器更改了它!