AngularJS - 为JSON添加6小时输入日期

时间:2016-07-08 03:58:27

标签: javascript angularjs json

我不知道如何在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'}}">

当我犯错时你能告诉我吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

首先,您不需要将任何内容转换为JSON并且您的代码似乎是正确的(无视您甚至不使用 $ scope 或< em> controllerAsSyntax 将你的变量发送到视图 - 我更愿意认为这只是问题 - ),也许你可能在他的观点中犯了一些错误

所以你只需要使用ngChange指令来实现这一点。

这是一个代码片段:

&#13;
&#13;
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;
&#13;
&#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));