我的json中有这种格式的日期 " 2015年2月26日00:00:00"我希望将其转换为星期几,即星期二 使用momentjs这似乎很简单,但我的问题是如何调用html内的momentjs format()方法与< script>内部 我想我可以在脚本中创建一个新的json字符串,但是想避免那个
<!DOCTYPE html>
<html>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="test" ng-controller="test">
<table>
<tr><th>day</th><th>value</th></tr>
<tr ng-repeat="tsval in data['key']">
<td>{{tsval.timestamp }}</td>
<td>{{ tsval.val }}</td>
</tr>
</table>
</body>
<script>
angular.module('test', []).controller('test', function($scope) {
$scope.data = {
'key':[
{
'timestamp':'26 Feb 2015 00:00:00 GMT',
'val':'v1'
},
{
'timestamp':'27 Feb 2015 00:00:00 GMT',
'val':'v2'
},
{
'timestamp':'28 Feb 2015 00:00:00 GMT',
'val':'v3'
}
]
};
});
</script>
</html>
答案 0 :(得分:3)
这是一个包装moment().format()
angular.module('myApp', [])
.controller('myCtrl', function($scope) {
$scope.myDate = '28 Feb 2015 00:00:00 GMT';
})
.filter('format', function() {
return function(input, format) {
return moment(new Date(input)).format(format);
};
})
;
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<p>{{myDate | format:'ddd'}}</p>
</div>
&#13;
您也可以使用内置在date
过滤器中的Angular,但它不喜欢您的日期格式,因此您必须应用其他过滤器来转换它首先是ISO字符串。如果你出于任何其他原因不需要时刻,我会摆脱它而只是这样做。
angular.module('myApp', [])
.controller('myCtrl', function($scope) {
$scope.myDate = '28 Feb 2015 00:00:00 GMT';
})
.filter('dateToISO', function() {
return function(input) {
return new Date(input).toISOString();
};
})
;
&#13;
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<p>{{myDate | dateToISO | date:'EEE'}}</p>
</div>
&#13;
答案 1 :(得分:1)
只需将一个辅助函数添加到范围内,即将提供的日期格式化为一天。
angular.module('test', []).controller('test', function($scope) {
$scope.data = {
'key': [{
'timestamp': '26 Feb 2015 00:00:00 GMT',
'val': 'v1'
}, {
'timestamp': '27 Feb 2015 00:00:00 GMT',
'val': 'v2'
}, {
'timestamp': '28 Feb 2015 00:00:00 GMT',
'val': 'v3'
}]
};
$scope.toDay = function(date) {
return moment(date).format('ddd');
};
});
在你的模板中,关闭助手并将日期作为参数传递。
<td>{{ toDay(tsval.timestamp) }}</td>
这呈现:
day value
Wed v1
Thu v2
Fri v3
这里是plunker