如何在angularjs控制器中转换时间格式的字符串



我的控制器中有一个这样的数据集

{
"schedule":[{"day":"Monday","start":"15:00:00"},{"day":"Tuesday","start":"16:30:00"}]
}

在我看来,我想使用输入[时间]

<div ng-repeat="day in obj.schedule">
<input  type="time" min="00:00:00" max="23:59:00" placeholder="" ng-model="day.start"/>
</div>

它不起作用,因为它需要一个日期,而不是字符串。

如何在控制器内部将字符串转换为时间?

我试过

$scope.start = new Date(obj.start)

但不起作用

var app = angular.module('myApp', []);
app.controller('mainCtrl', function($scope) {
$scope.obj = {
"schedule": [{
"day": "Monday",
"start": "15:00:00"
}, {
"day": "Tuesday",
"start": "16:30:00"
}]
}
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="mainCtrl">
<div ng-repeat="day in obj.schedule">
<input type="time" min="00:00:00" max="23:59:00" placeholder="" ng-model="day.start" />
</div>
</div>

如果你的情况下有一个日期,也许可以试试

angular.module('app',[])
.controller('mainCtrl', function($scope){
var vm = this;

$scope.obj = {
"schedule": [{
"day": "Monday",
"start": "15:00:00"
}, {
"day": "Tuesday",
"start": "16:30:00"
}]
}

for(var i = 0; i < $scope.obj.schedule.length; i++) {
$scope.obj.schedule[i].start = stringToDate($scope.obj.schedule[i].start);
}

function stringToDate(stringDate) {
var date = new Date();
var splitDate = stringDate.split(':');
date.setHours(splitDate[0], splitDate[1], splitDate[2]);

return date.toLocaleTimeString();
}
})
<html ng-app="app">
<body>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-controller="mainCtrl as vm">
<div ng-repeat="day in obj.schedule">
<input type="time" min="00:00:00" max="23:59:00" placeholder="" ng-model="day.start"/>
</div>
</div>
</body>
</html>

最新更新