-4
A
回答
-1
如果你想在C#中DIFF功能;
DateTime oldDate= "06/01/2014 12:00:00 AM";
TimeSpan timeDiff = DateTime.Now - oldDate;
int diff =Convert.ToInt32(timeDiff.TotalHours);
如果你想在JavaScript中它是一个脚本块应该帮助你;
function diffDateTime(startDT, endDT) {
if (typeof startDT == 'string' && startDT.match(/^[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}[amp ]{0,3}$/i)) {
startDT = startDT.match(/^[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}/);
startDT = startDT.toString().split(':');
var obstartDT = new Date();
obstartDT.setHours(startDT[0]);
obstartDT.setMinutes(startDT[1]);
obstartDT.setSeconds(startDT[2]);
}
else if (typeof startDT == 'string' && startDT.match(/^now$/i)) var obstartDT = new Date();
else if (typeof startDT == 'string' && startDT.match(/^tomorrow$/i)) {
var obstartDT = new Date();
obstartDT.setHours(24);
obstartDT.setMinutes(0);
obstartDT.setSeconds(1);
}
else var obstartDT = new Date(startDT);
if (typeof endDT == 'string' && endDT.match(/^[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}[amp ]{0,3}$/i)) {
endDT = endDT.match(/^[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}/);
endDT = endDT.toString().split(':');
var obendDT = new Date();
obendDT.setHours(endDT[0]);
obendDT.setMinutes(endDT[1]);
obendDT.setSeconds(endDT[2]);
}
else if (typeof endDT == 'string' && endDT.match(/^now$/i)) var obendDT = new Date();
else if (typeof endDT == 'string' && endDT.match(/^tomorrow$/i)) {
var obendDT = new Date();
obendDT.setHours(24);
obendDT.setMinutes(0);
obendDT.setSeconds(1);
}
else var obendDT = new Date(endDT);
var secondsDiff = (obendDT.getTime() - obstartDT.getTime()) > 0 ? (obendDT.getTime() - obstartDT.getTime())/1000 : (86400000 + obendDT.getTime() - obstartDT.getTime())/1000;
secondsDiff = Math.abs(Math.floor(secondsDiff));
var oDiff = {}; // object that will store data returned by this function
oDiff.days = Math.floor(secondsDiff/86400);
oDiff.totalhours = Math.floor(secondsDiff/3600); // total number of hours in difference
oDiff.totalmin = Math.floor(secondsDiff/60); // total number of minutes in difference
oDiff.totalsec = secondsDiff; // total number of seconds in difference
secondsDiff -= oDiff.days * 86400;
oDiff.hours = Math.floor(secondsDiff/3600); // number of hours after days
secondsDiff -= oDiff.hours * 3600;
oDiff.minutes = Math.floor(secondsDiff/60); // number of minutes after hours
secondsDiff -= oDiff.minutes * 60;
oDiff.seconds = Math.floor(secondsDiff); // number of seconds after minutes
return oDiff;
}
usage;
var objDiff = diffDateTime('06/01/2014 12:00:00 AM', 'now');
var dtdiff = objDiff.days + ' days, ' + objDiff.hours + ' hours, ' + objDiff.minutes + ' minutes, ' + objDiff.seconds + ' seconds';
重要:你要记住,DateTime格式必须是EN-US格式DD/MM/YYYY HH:MM:SS。
+0
他希望它在JavaScript中。 –
+0
需要找到两个日期之间的差异,而不是差异函数。谢谢 – user3710962
0
我建议你应该使用jquery date.js库,那么你可以使用它的时间跨度类象下面这样:
var future = Date.parseExact("22:30:00", "hh:mm:ss");
var past = Date.parseExact("06:30:00", "hh:mm:ss");
var span = new TimeSpan(future - now);
和你的时间差异如下:
span.getHours() + ":" span.getMinutes() + ":" span.getSeconds()
1
你是多少最好用全日期对象来做这种类型的数学运算,否则你必须对时间值进行猜测,例如,如果结束时间小于开始时间,则必须在第二天。
以下包括一对帮助函数和一个主要函数来获得差异。
// Convert h:m:s to seconds
function hmsToSecs(s) {
var b = s.split(':');
return b[0]*3.6e3 + b[1]*60 + +b[2];
}
// Convert seconds to hh:mm:ss
function secsToHMS(n) {
function z(n){return (n<10? '0':'') + n;}
var sign = n < 0? '-' : '';
n = Math.abs(n);
return sign + z(n/3.6e3|0) + ':' + z(n%3.6e3/60|0) + ':' + z(n%60);
}
// Calculate time difference between two times
// start and finish in hh:mm:ss
// If finish is less than start, assume it's the following day
function timeDiff(start, finish) {
var s = hmsToSecs(start);
var f = hmsToSecs(finish);
// If finish is less than start, assume is next day
// so add 24hr worth of seconds
if (f < s) f += 8.64e4;
return secsToHMS(f - s);
}
console.log(timeDiff('22:30:00','06:30:00')); // 08:00:00
console.log(timeDiff('06:30:00','22:30:00')); // 16:00:00
使用完整日期的对象,你可以这样做:
var start = new Date(2014,5,5,22,30); // 22:30:00 on 5 June 2014
var finish = new Date(2014,5,6,6,30); // 06:30:00 on 6 June 2014
// Subtract dates to get difference in ms, convert to seconds and format
console.log(secsToHMS((finish - start)/1000)); // 08:00:00
console.log(secsToHMS((start - finish)/1000)); // -08:00:00
相关问题
- 1. 24小时时间格式
- 2. 检查时间差在24小时
- 3. python - datetime.now()的24小时格式。小时
- 4. Moment.js 24小时时间格式,处理第24小时
- 5. 安卓:24小时格式
- 6. 如何在SQL Server 24小时格式中花费时间差
- 7. Python时间戳的24小时格式
- 8. 实际时间的24小时格式?
- 9. 查找一段24小时(未尤其是最后24小时)
- 10. jQuery的:如何获得与12小时格式和时间的时间之差与24小时格式
- 11. 12小时或24小时格式的NSDateComponent中的小时?
- 12. 如何将24小时格式TimeSpan转换为12小时格式TimeSpan?表示为24小时格式
- 13. 格式化时间大于24小时
- 14. Php验证24小时时间格式
- 15. 以24小时格式显示时间
- 16. 24小时AngularJS时间输入格式
- 17. 升压定时器24小时格式
- 18. 显示24小时格式时间?
- 19. 24小时时间表 - 时间差
- 20. 使用javascript转换24小时格式为12小时格式
- 21. 24小时格式为12小时格式
- 22. 转换12小时格式到24小时格式在SQL Server
- 23. 正则表达式12小时和24小时时间格式
- 24. Flex中的时间格式“24小时制”和“12小时制”
- 25. 循环24小时制时差
- 26. 转换日期,时间在12小时格式24小时格式的iOS
- 27. 从12小时格式到24小时格式的时间转换
- 28. 在24小时内查找最大值
- 29. 从24小时更改JS时间格式12小时
- 30. jqm-calendar时间格式(默认24小时...宁愿12小时)
为什么不应该的答案是16:00:00? –
用':'分割那个时间字符串,然后做你的数学运算,然后加入你的数学结果。 – Epsil0neR
我曾尝试使用数学函数,但它显示输出为-16:00:00,而不是08:00:00。 – user3710962