【问题标题】:Why does angularjs bootstrap datepicker pick one day before?为什么 angularjs bootstrap datepicker 会在前一天选择?
【发布时间】:2014-09-01 19:04:15
【问题描述】:

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

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

这里是plunk 的问题。

有什么解决办法吗?

【问题讨论】:

    标签: angularjs angularjs-directive bootstrap-datepicker


    【解决方案1】:

    对于任何需要 .NET Web Api 世界中的解决方案的人,这条线对我来说效果很好:

    GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Local;
    

    这是由于 JsonFormatter 在错误的时区吐出时间。

    【讨论】:

    • 我在使用 Web API2 在 Angular 方面遇到了同样的问题,结果证明你的问题正是医生所要求的。谢谢
    • 这正是我要找的。​​span>
    • 如果你使用 web api 作为后端,这是最好的答案,感谢分享这个@john lee
    【解决方案2】:

    我的解决方案是使用指令来修复负 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);
          };
        }
      };
    }]);
    

    【讨论】:

    • 这对我不起作用,我可以看到过滤器正在执行,但选择前一天没有变化。
    • 是的,这里的过滤器正在执行但没有变化
    【解决方案3】:

    这是由于 JS 本身处理日期的方式。 AngularUI 团队在文档中提到了这一点。

    这是一种解决方案:Angular-UI One day is subtracted from date in ui-date

    【讨论】:

    • 这个答案是关于 angular-ui 但问题是关于 angular-bootstrap datepicker。
    • 如果你点击问题中的链接,你可以看到他正在使用 Angular UI Datepicker。
    【解决方案4】:

    我刚刚用 new Date() 初始化了 ngModel,此后日期设置正确,即使我用日期选择器更改了它!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-09
      • 1970-01-01
      • 2014-03-19
      • 2021-12-31
      相关资源
      最近更新 更多