需要在javascript应用程序中查找没有日期的时间之间的差异

need to find the difference between timings without dates in javascript application

本文关键字:日期 时间 之间 javascript 应用程序 查找      更新时间:2023-09-26

在javascript应用程序中,我没有日期,只有24小时格式的一天的时间。我怎样才能正确地找到它们之间的区别?

我所有的谷歌搜索结果都只给出了日期时间差的计算结果。

例如,如果我想找到(下午4点15分至2点45分)之间的差异,

在我的代码中,

var startTime  = "14.45"; var endTime = "16.15";

现在var diffTime = endTime - startTime,它应该给出1.30。

为了澄清我的问题,你可以参考我的相关问题SO,了解我试图实现的目标。

将字符串转换为所需的最小单位,在您的情况下是分钟。做算术运算以在几分钟内得到结果。再次进行算术运算,从结果中找出小时和分钟。您还可以添加逻辑来检查小时数是否为零,并在这种情况下更改为24。但正如评论所指出的,如果不在同一日期,就无法进行比较。

function getMinutes(timeString){
    var hours = parseInt(timeString.split('.')[0], 10);
    hours = hours === 0? 24 : hours;
    var minutes = parseInt(timeString.split('.')[1], 10);
    var totalMinutes = (hours * 60) + minutes;
    return totalMinutes;
}
var startTime  = "23.45"; 
var endTime = "0.15";
var differenceInMinutes = getMinutes(endTime) - getMinutes(startTime);
var resultString = Math.floor(differenceInMinutes/60) + "." + (differenceInMinutes%60);

另一种方法是使用日期构造函数创建伪日期,并将日期部分保留为某个任意日期(结束和开始相同),并使用常见的日期比较方法。

javascript中似乎有两个字符串变量。所以谈论时间和日期真的为时过早。它们看起来很像浮点数,但如果是这样的话,那么唯一可以应用于浮点数的算术就是浮点算术(+-*/)。因此,您的第一步是将这些字符串变量解析为相应的浮点数:

var startTime = '14.45'; 
var endTime = '16.15';
var startTimeFloat = parseFloat(startTime);
var endTimeFloat = parseFloat(endTime);
if (isNaN(startTimeFloat) || isNaN(endTimeFloat)) {
    alert('Please input valid floating point numbers before being able to do any arithmetic on them');
} else {
    var difference = endTimeFloat - startTimeFloat;
    // Obviously here you should take into account the case where
    // the start number is bigger than the end number in which case
    // you would get a negative value for the difference. If you care only
    // about the absolute value of the difference then you may use the 
    // Math.abs javascript method. Just like that:
    // var difference = Math.abs(endTimeFloat - startTimeFloat);
    alert(difference);
}