我是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**
};
答案 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