Javascript 如何计算AngularJS中2个datetime对象的时差?
我是AngularJS的新手,我想用格式计算两个日期时间对象之间的时间差: 小时:分钟:秒 但我希望及时获得两位数的输出: 预计产量:00:00:04 输入: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
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??