繁体   English   中英

获取两个变量之间的差异

[英]Get the difference between two variables

我有一个 object 和 Hours 保存为字符串。 我需要将字符串转换为小时,然后得到 2 个变量之间的差异。

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) 时出现问题

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

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;

基本问题是您正在gSchedule.hourTogSchedule.hourFrom并在它们是字符串值时尝试使用它们执行算术运算。 您需要拆分字符串并提取数字类型来执行这种类型的数学计算。

在这种情况下,相关的数字部分是HH:MM字符串的小时部分,因此使用带有:作为分隔符的拆分 function 将返回两个字符串的列表,一个小时字符串和一个分钟字符串。 然后我们可以解析小时字符串以获取 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)

如果您想进一步阅读您在此处获得的答案之外的不同方法, 这是一个类似的问题,可能对参考有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM