Javascript 获取两个变量之间的差

Javascript 获取两个变量之间的差,javascript,node.js,typescript,Javascript,Node.js,Typescript,我有一个对象,小时保存为字符串。我需要将字符串转换为小时,然后得到两个变量之间的差值 const groupSchedule=[ {"days":"sat","Hourfrom":"15:00","Hourto":"19:00"}, {"days":"sun","Hourfrom":"15:00","Hourto":"19:00"}, {"days":"mon","Hourfrom":"15:00","Hourto":"19:00"}, ] function number

我有一个对象,小时保存为字符串。我需要将字符串转换为小时,然后得到两个变量之间的差值

const groupSchedule=[
    {"days":"sat","Hourfrom":"15:00","Hourto":"19:00"},
    {"days":"sun","Hourfrom":"15:00","Hourto":"19:00"},
    {"days":"mon","Hourfrom":"15:00","Hourto":"19:00"},
]
function numberOfHoursInWeek(groupSchedule) {
    let hours = 0;
    for (const gSchedule of groupSchedule) {
           let hour = gSchedule.Hourto.to - gSchedule.Hourfrom;
        console.log(hour);
        hours += hour;
    }
    return hours;
}

将字符串转换为小时(NAN)时出现问题。

基本问题是,您正在从获取
gSchedule.hourTo
gSchedule.hourf,并尝试在它们是字符串值时对它们执行算术运算。您需要拆分字符串并提取一个数字类型来执行这种类型的数学计算

在这种情况下,相关的数字部分是
HH:MM
字符串的小时部分,因此使用带有
的拆分函数作为分隔符将返回两个字符串的列表,一个小时字符串和一个分钟字符串。然后,我们可以解析hours字符串以获得int、float或其他数字类型

//split time strings on the ':'
let hrToSplit = gSchedule.hourTo.split(':')
let hrFromSplit = gSchedule.hourFrom.split(':')

//parse time strings to extract hour as int
let hrToNum = parseInt(hrToSplit[0], 10)
let hrFromNum = parseInt(hrFromSplit[0], 10)

//perform whatever math is needing using the numbers themselves, not the strings
console.log(hrToNum + hrFromNum)

如果你想在这里得到的答案之外,对不同的方法做进一步的阅读,

我试图用一种非常冗长的方式来写。你可以这样做:

const hoursTo = "19:33";
const hoursFrom = "14:55";
const hoursToArray = hoursTo.split(":");
const hoursFromArray = hoursFrom.split(":");
const hoursToDate = new Date(0, 0, 0, hoursToArray[0], hoursToArray[1], 0, 0); 
const hoursFromDate = new Date(0, 0, 0, hoursFromArray[0], hoursFromArray[1], 0, 0); 
const difference = Math.abs(hoursToDate - hoursFromDate) / 36e5;
console.log(hours) //4.633333333333334;

就我而言,在<>代码> GTeal.Hurto中,不存在代码< >代码>的属性。对于。如果您不想在没有实际日期的情况下与DATA.PARSE进行斗争,您可以考虑使用Simult.js。该库有更好的解析时间字符串的方法,如“矩(“15:00”,“HH:mm”)”。您还可以轻松地对时刻进行计算。为什么不将其解析为
Date
,并允许对象为您进行与时间相关的数学计算呢?我发现这是一个简单的解决方案,因为问题只涉及获取
HH:MM
格式的字符串并使用小时数执行数学运算,但我看到了解析作为
日期
也是一种有效的方法。