2014-09-21 25 views
1

我是AngularJS的新手,並且遇到了一個看似簡單的問題。通過ng-model輸入到ng-controller的日期值在IE(v8/9/10)和Chrome之間有不同的讀取(見下文)。這種不一致使得難以編寫代碼來處理服務器端的日期(Python)。通過ng-model傳遞的Javascript日期格式問題

我該如何使這一致? (最好是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** 
}; 

回答

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日期過濾器API angularjs的https://docs.angularjs.org/api/ng/filter/date

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

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

使用$過濾服務。 更多信息: https://docs.angularjs.org/api/ng/filter/date

+0

謝謝。這個答案通過@filter解決了問題,就像Kalhano提供的解決方案一樣。 – 2014-09-21 14:40:21