【JavaScript】时间比较小练习(会议时间是否在工作时间内)

要求

检查会议时间是否在工作时间范围内,并且需要考虑会议持续时间不能超过下班时间。

const dayStart = "07:30";
const dayEnd = "17:45";

function scheduleMeeting(startTime,durationMinutes) {
    // ..TODO..
}

scheduleMeeting("7:00",15);     // false
scheduleMeeting("07:15",30);    // false
scheduleMeeting("7:30",30);     // true
scheduleMeeting("11:30",60);    // true
scheduleMeeting("17:00",45);    // true
scheduleMeeting("17:30",30);    // false
scheduleMeeting("18:00",15);    // false

实现思路

  1. 时间字符串转换为分钟数

    • 将"HH:MM"格式的时间转换为从午夜开始的分钟总数
    • 这样"07:30"会变成 7×60+30=450 分钟
    • 这种转换方法可以轻松处理有无前导零的情况
  2. 计算会议的开始和结束时间

    • 会议开始时间就是输入的startTime转换后的分钟数
    • 会议结束时间是开始时间加上持续时间(durationMinutes)
  3. 检查会议时间是否在工作时间范围内

    • 会议开始时间不早于dayStart(07:30)
    • 会议结束时间不晚于dayEnd(17:45)

实现代码

const dayStart = '07:30';
const dayEnd = '17:45';

const dayStartMinutes = getMinutesSinceMidnight(dayStart)
const dayEndMinutes = getMinutesSinceMidnight(dayEnd)

function scheduleMeeting(startTime, durationMinutes) {
    const startTimeMinutes = getMinutesSinceMidnight(startTime)
    const endTimeMinutes = startTimeMinutes + durationMinutes;

    return startTimeMinutes >= dayStartMinutes && endTimeMinutes <= dayEndMinutes;
}

function getMinutesSinceMidnight(timeStr) {
    const [hours, minutes] = timeStr.split(':');

    return parseInt(hours, 10) * 60 + parseInt(minutes, 10);
}


console.log(scheduleMeeting('7:00', 15));     // false
console.log(scheduleMeeting('07:15', 30));    // false
console.log(scheduleMeeting('7:30', 30));     // true
console.log(scheduleMeeting('11:30', 60));    // true
console.log(scheduleMeeting('17:00', 45));    // true
console.log(scheduleMeeting('17:30', 30));    // false
console.log(scheduleMeeting('18:00', 15));    // false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值