我不知道如何在AngularJS中添加6小时输入日期。
我试过这个:
var eventStart = new Date ($scope.event.startdateid);
var startDate = new Date ( eventStart );
startDate.setHours ( eventStart.getHours() + 6 );
event.startdateid = new Date(startDate).toJSON();
但没有任何事情发生......
这是我的HTML:
<input type="date" name="startdateid" ng-model="event.startdateid" min="{{date | date:'yyyy-MM-dd'}}">
当我犯错时你能告诉我吗?
谢谢!
答案 0 :(得分:3)
首先,您不需要将任何内容转换为JSON
并且您的代码似乎是正确的(无视您甚至不使用 $ scope 或< em> controllerAsSyntax 将你的变量发送到视图 - 我更愿意认为这只是问题 - ),也许你可能在他的观点中犯了一些错误
所以你只需要使用ngChange指令来实现这一点。
这是一个代码片段:
var app = angular.module('app', []);
app.controller('mainCtrl', function($scope) {
$scope.setHours = function() {
$scope.event.startdateid.setHours($scope.event.startdateid.getHours() + 6);
}
});
&#13;
<!DOCTYPE html>
<html ng-app="app">
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.js"></script>
</head>
<body ng-controller="mainCtrl">
<input type="date" name="startdateid" ng-model="event.startdateid" min="{{date | date:'yyyy-MM-dd'}}" ng-change="setHours()">
<hr>
<!-- The date with +6 hours -->
<span ng-bind="event.startdateid | date:'yyyy-MM-dd HH:mm'"></span>
</body>
</html>
&#13;
答案 1 :(得分:1)
为什么不momentJS?
moment(someDate).add(6, 'hours');
答案 2 :(得分:0)
我建议使用Datejs
在 JavaScript pure 中执行此操作的方式,没有第三方lib:
Date.prototype.addHours = function(h) {
this.setTime(this.getTime() + (h*60*60*1000));
return this;
}
或者只是更新 6小时的时间与您的代码类似:
startDate.setTime(this.getTime() + (6*60*60*1000));