Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何计算AngularJS中2个datetime对象的时差?_Javascript_Angularjs_Angularjs Ng Repeat - Fatal编程技术网

Javascript 如何计算AngularJS中2个datetime对象的时差?

Javascript 如何计算AngularJS中2个datetime对象的时差?,javascript,angularjs,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,我是AngularJS的新手,我想用格式计算两个日期时间对象之间的时间差: 小时:分钟:秒 但我希望及时获得两位数的输出: 预计产量:00:00:04 输入: StartDate=2016-06-29 15:52:32.360 EndDate=2016-06-29 15:53:36.970 Expected output: 00 : 01 : 04 这是我的代码: public class User { public int Id { get; set; } pub

我是AngularJS的新手,我想用格式计算两个日期时间对象之间的时间差:

小时:分钟:秒

但我希望及时获得两位数的输出:

预计产量:00:00:04

输入:

StartDate=2016-06-29 15:52:32.360

EndDate=2016-06-29 15:53:36.970

Expected output: 00 : 01 : 04
这是我的代码:

public class User
{
      public int Id { get; set; }
      public Nullable<System.DateTime> StartDateTime { get; set; }
      public Nullable<System.DateTime> EndDateTime { get; set; }
}

Json output:

[
  {
    "Id": 121,
    "StartDateTime": "\/Date(1467195752360)\/",  //2016-06-29 15:52:32.360
    "EndDateTime": "\/Date(1467195756970)\/", //2016-06-29 15:53:36.970
  },
  {
    "Id": 122,
   "StartDateTime": "\/Date(1467195752360)\/",// 2016-06-29 15:52:32.360

    "EndDateTime": "\/Date(1467195758360)\/", //2016-06-29 15:53:36.970
  }
]
公共类用户
{
公共int Id{get;set;}
公共可为空的StartDateTime{get;set;}
公共可为空的EndDateTime{get;set;}
}
Json输出:
[
{
“Id”:121,
“StartDateTime”:“\/日期(1467195752360)\/”,//2016-06-29 15:52:32.360
“EndDateTime”:“\/日期(1467195756970)\/”,//2016-06-29 15:53:36.970
},
{
“Id”:122,
“StartDateTime”:“\/日期(1467195752360)\/”,//2016-06-29 15:52:32.360
“EndDateTime”:“\/日期(1467195758360)\/”,//2016-06-29 15:53:36.970
}
]
代码:

 <td  ng-repeat="item in User">
      //How to display time difference here
      <p> Hour : Minutes : Seconds  </p
  </td>

//如何在此处显示时差

小时:分钟:秒您可以使用过滤器在ng中实现重复:

var-app=angular.module('app',[]);
应用程序控制器('mainCtrl',函数($scope){
$scope.timeSlots=[
{  
“起始日期”:1467195752360,
“结束日期”:1467195756970
},
{  
“起始日期”:1467195752360,
“结束日期”:1467195758360
}
];
});
app.filter(“getDiff”,函数(){
返回函数(时间){
var startDate=新日期(time.startDate);
var endDate=新日期(time.endDate);
var MilisondsDiff=结束日期-开始日期;
返回Math.floor(milissecondsdiff/(1000*60*60)).tolocalString(未定义,{minimumIntegerDigits:2})+“:”+(Math.floor(milissecondsdiff/(1000*60))%60.tolocalString(未定义,{minimintegerdigits:2})+“+(Math.floor(milissecondsdiff/1000)%60).tolocalString(未定义,{minimumIntegerDigits:2});
}
});

您可以使用angular的“$filter”将日期格式化为您的日期

一个正在工作的人:

JS:

HTML:

<div ng-controller="Ctrl1">
       <div ng-repeat="date in dates">
  {{ date.hours }} :{{ date.minutes }} : {{date.secondes }}
  </div>

</div>

{{date.hours}}:{{date.minutes}}:{{date.secondes}

像这样做一个角度函数

var timediff=function(){
var startdate=StartDate;//yr json date.
var enddate=EndDate;

// here we will split date time string to get date hour min sec invidually.
var arr=[];
arr=startdate.split(' ');//split date and time
date=arr[0];
var arr0=[];
arr0=date.split('-');//split date into yr,date, month

time=arr[1];
var arr1=[];
arr1=time.split(':');//split time into min , hour, sec

var datebegin = new Date(arr0[0], arr0[1]-1, arr0[2], arr1[0], arr1[1],arr1[2])

var arr=[];
arr=enddate.split(' ');
date=arr[0];
var arr0=[];
arr0=date.split('-');

time=arr[1];
var arr1=[];
arr1=time.split(':');

var dateend = new Date(arr0[0], arr0[1]-1, arr0[2], arr1[0], arr1[1],arr1[2])

var timeLeft =  dateend-datestart  ;
parseTime(timeLeft);




}
<p> {{hh}} : {{mm}} : {{ss}}</p>
生成解析函数

 var parseTime=function(diff){

 var msec = diff;
 var hh = Math.floor(msec / 1000 / 60 / 60);
 msec -= hh * 1000 * 60 * 60;
 var mm = Math.floor(msec / 1000 / 60);
 msec -= mm * 1000 * 60;
 var ss = Math.floor(msec / 1000);
msec -= ss * 1000;

 $scope.hh=hh;
  $scope.mm=mm;
 $scope.ss=ss;
 }
像这样在代码中使用这些范围变量

var timediff=function(){
var startdate=StartDate;//yr json date.
var enddate=EndDate;

// here we will split date time string to get date hour min sec invidually.
var arr=[];
arr=startdate.split(' ');//split date and time
date=arr[0];
var arr0=[];
arr0=date.split('-');//split date into yr,date, month

time=arr[1];
var arr1=[];
arr1=time.split(':');//split time into min , hour, sec

var datebegin = new Date(arr0[0], arr0[1]-1, arr0[2], arr1[0], arr1[1],arr1[2])

var arr=[];
arr=enddate.split(' ');
date=arr[0];
var arr0=[];
arr0=date.split('-');

time=arr[1];
var arr1=[];
arr1=time.split(':');

var dateend = new Date(arr0[0], arr0[1]-1, arr0[2], arr1[0], arr1[1],arr1[2])

var timeLeft =  dateend-datestart  ;
parseTime(timeLeft);




}
<p> {{hh}} : {{mm}} : {{ss}}</p>
{{hh}:{{mm}:{{ss}



不要在意它们。您是如何尝试的?您会如何比较javascript中的日期?这是您的datetime是来自引导datetime的字符串还是它从javascript返回的字符串date@VivekSingh这个日期时间是从服务器端方法返回的。您可以考虑Web ServeOK,我会告诉您一个解决方案。您能演示一下我将如何使用NG Read作为这个?我会做内线的,对不起,我不明白你想要什么。你想使用一个NG重复并在视图侧对它进行计算吗?我是说我正在获取记录列表,我想计算每个记录的2 DATETIME对象的差异。你已经为单个记录做了这件事。考虑到你有超过1条记录,你想计算每个记录的时差,然后你会怎么做。它??因此,当我在ajax成功函数中获取记录时,那么当时我需要在您的计算函数中传递我的用户对象,对吗???获取null:null:null我如何对我的每个记录执行此操作,因为我正在使用ng Repeat在您的plunker输出中获取NAN。您使用什么日期进行测试?我测试了几个日期,看起来不错,当前代码取下限值,这就是为什么差异是3秒800毫秒,显示为3秒。你想让它汇总吗?这是根据你的要求更新的Plunk,你能告诉我如何在每个记录的html视图中使用它吗?因此,当我在ajax成功函数中获得记录时,我循环到该记录,并为每个记录调用函数timediff,在这个函数中,我正确地传递startdate和enddate??