AngularJS:mdDatepicker是一天假

时间:2018-04-21 16:54:48

标签: javascript angularjs datepicker timezone angularjs-material

我使用的是Angularjs Material datepicker扩展名

这是一个简单的用法示例:

<md-datepicker ng-model="$ctrl.date"></md-datepicker>

在我的app config中:

$mdDateLocaleProvider.formatDate = function (date) {
  if (!date) {
    return '';
  }
  return moment(date).format('YYYY-MM-DD');
};

这是我面临的一个问题 - 当通过日历选择日期时,它会返回正确的值, 但是当我输入一个确切的日期,例如 2012-12-12  它给了我一天假的价值 Tue Dec 11 2012 00:00:00 GMT-0500 (EST)

P.S。这是我发现有这样一个问题的Codeopen

1 个答案:

答案 0 :(得分:1)

这是javascript中的一个已知错误 例: new Date ('2012/03/21'); - &gt; Wed Mar 21 2012 00:00:00 GMT-0400 (Eastern Daylight Time)

new Date ('2012-03-21'); - &gt; Tue Mar 20 2012 20:00:00 GMT-0400 (Eastern Daylight Time)

我能给你的最佳建议是将-更改为/

试试这个

<强> HTML

<div ng-app="MyApp" ng-controller="AppCtrl">
  <md-content>
    <md-datepicker ng-model="myDate" md-placeholder="Enter date" ng-change="change(myDate)"></md-datepicker>
  </md-content>
</div>

<强> JS

angular.module('MyApp')
    .controller('AppCtrl', function($scope) {
      $scope.myDate = new Date();

      $scope.minDate = new Date(
        $scope.myDate.getFullYear(),
        $scope.myDate.getMonth() - 2,
        $scope.myDate.getDate());

      $scope.maxDate = new Date(
        $scope.myDate.getFullYear(),
        $scope.myDate.getMonth() + 2,
        $scope.myDate.getDate()); 
console.log($scope.myDate.toLocaleDateString(), $scope.myDate.toUTCString());

       $scope.change = function(data) { 
        console.log($scope.myDate.toLocaleDateString());
        console.log( $scope.myDate.toUTCString());     
      }

})


.config(function($mdDateLocaleProvider) {
  $mdDateLocaleProvider.formatDate = function(date) {
    return moment(date).format('YYYY/MM/DD');
  };
});