为什么angularjs bootstrap datepicker在前一天选择?

时间:2014-09-01 19:04:15

标签: angularjs angularjs-directive bootstrap-datepicker

我正在使用angularjs bootstrap datepicker directive 当我从模型中设置日期时,它会在所选日期前一天选择。

<button type="button" class="btn btn-sm btn-default" ng-click="dt = '2014-09-24'">2014-09-24</button>

这是plunk的问题。

有没有解决方案?

4 个答案:

答案 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,之后日期设置正确,即使我用日期选择器更改了它!