使用ng-model传递的Javascript日期格式问题

时间:2014-09-21 07:27:44

标签: javascript angularjs date

我是AngularJS的新手,并且在看似简单的问题上苦苦挣扎。通过ng-model输入到ng-controller的日期值在IE(v8 / 9/10)和Chrome之间以不同的方式读取(见下文)。这种不一致使得编写代码以处理服务器端的日期(Python)变得很困难。

我怎样才能保持这种一致性? (最好是IE格式,因为“GMT-0700(太平洋夏令时)”不容易解析到服务器上的日期时间。提前感谢。

HTML:

<div id="td_date"  ><datepicker type="text" id="newdate" ng-model="data.date" name="date" bs-datepicker ></div>
Selected date: {{data.date}}  -----> **This prints 2014-09-21T07:10:45.117Z in both browsers**

JS:

function ($scope, $log, data) {

   $log.info('date ='+ data.date);    ----> **This prints 'Sat Sep 21 00:10:45 PDT 2014' in IE 
                       but 'Sun Sep 21 2014 00:10:45 GMT-0700 (Pacific Daylight Time)' in Chrome**
}; 

2 个答案:

答案 0 :(得分:3)

当您提交表单时,请检查输入并检查日期对象并将日期格式化为您更喜欢的格式:)这样您就可以在后端以精确格式获取日期

    if($scope.data.date instanceof Date) {
        $scope.data.date  = $filter('date')($scope.data.date , "yyyy-MM-dd"); // filter to a format u like
    }

如果您的表单位于data对象data.date,'data.userName'...... 您可以按如下方式使用,提交表单时

for (key in $scope.data) {
    $scope.data[key] instanceof Date) {
        $scope.data[key] = $filter('date')($scope.data[key], "yyyy-MM-dd"); // filter to a format u like
    }
}

这里是angularjs https://docs.angularjs.org/api/ng/filter/date

中日期过滤器的api

答案 1 :(得分:1)

function ($scope, $log, data, $filter) {

   $log.info('date ='+ $filter('date')(data.date,'dd-MM-yyyy');   
}; 

使用angularjs的$ filter服务。 了解更多信息: https://docs.angularjs.org/api/ng/filter/date