如何将所有日期转换为YYYY-MM-DD
格式?我已经用过这种方式,但它没有用。
$scope.dateDatas = [0:"29-09-2016", 1:"30-09-2016",2:"01-10-2016",3:"02-10-2016",4:"03-10-2016"]
angular.forEach ($scope.dateDatas,
function (value) {
var d = $filter('date')(value, 'yyyy-mm-dd');
console.log(d);
});
答案 0 :(得分:1)
这个怎么样:
$scope.dateDatas = ["29-09-2016", "30-09-2016", "01-10-2016", "02-10-2016", "03-10-2016"];
$scope.result = [];
angular.forEach ($scope.dateDatas, function (value) {
var splitValue = value.split("-");
var date = new Date(splitValue[2], splitValue[1] - 1, splitValue[0]);
var res = $filter('date')(date, 'yyyy-MM-dd');
$scope.result.push(res);
console.log(res);
});
以下是问题:
在第一行,数组中不应有任何对,删除'key',并保留值:
$scope.dateDatas = ["29-09-2016", "30-09-2016", "01-10-2016", "02-10-2016", "03-10-2016"];
作为旁注,请记住在数组后加分号。
$filter('date')
适用于日期,而不是字符串。首先需要将初始字符串转换为日期对象。我得到了将此字符串从here转换为日期的代码。另请注意,在将月份值传递给Date
构造函数之前,需要将月值减1,因为Date
构造函数中的月份由于某种原因从0开始(期望0表示1月,1表示2月等):
var splitValue = value.split("-");
var date = new Date(splitValue[2], splitValue[1] - 1, splitValue[0]);
过滤器参数应该是'yyyy-MM-dd'
而不是'yyyy-mm-dd'
(大写字母M),因为小的m代表分钟而不是几个月,并且会给你这个结果:
["2016-00-29", "2016-00-30", "2016-00-01", "2016-00-02", "2016-00-03"]
另请查看plunker上的完整示例。