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
格式的字符串并使用小时数执行数学运算,但我看到了解析作为日期
也是一种有效的方法。