检查当前时间是否在可用时间内,NodeJS

时间:2017-07-17 16:11:14

标签: node.js datetime momentjs

我想知道当前时间(2017年7月17日星期一下午3:21)是否在可用时间内(这是一个JSON对象)

以下可用性时间可以读作,星期一上午7点到10点,下午1点和下午5点有空。 星期六上午9点到10点,下午3点到下午5点,依此类推。

我如何知道当前时间是否在可用性范围内,我使用moment.js

var availabilityTimes = {   
    "Monday": {
        "times": [
            {
                "startTime":"7:00 AM",
                "endTime":"10:00 AM"
            },
            {
                "startTime":"1:00 PM",
                "endTime":"5:00 PM"
            }
        ],
        "weekday": "Monday",
        "available": true
    },
    "Saturday": {
        "times": [
            {
                "startTime":"9:00 AM",
                "endTime":"10:00 AM"
            },
            {
                "startTime":"3:00 PM",
                "endTime":"5:00 PM"
            }
        ],
        "weekday": "Saturday",
        "available": true
    },
    "Tuesday": {
        "times": [
            {
                "startTime":"9:00 AM",
                "endTime":"8:00 PM"
            }
        ],
        "weekday": "Tuesday",
        "available": true
    },
    "Sunday": {
        "times": [
            {
                "startTime":"9:00 AM",
                "endTime":"8:00 PM"
            }
        ],
        "weekday": "Sunday",
        "available": true
    },
    "Friday": {
        "times": [
            {
                "startTime": "9:00 am",
                "endTime": "6:00 pm"
            }
        ],
        "weekday": "Friday",
        "available": true
    },
    "Wednesday": {
        "times": [
            {
                "startTime": "9:00 am",
                "endTime": "6:00 pm"
            }
        ],
        "weekday": "Wednesday",
        "available": true
    },
    "Thursday": {
        "times": [
            {
                "startTime": "9:00 am",
                "endTime": "6:00 pm"
            }
        ],
        "weekday": "Thursday",
        "available": true
    }
}

1 个答案:

答案 0 :(得分:1)

我相信这就是你要找的东西。

var isValid = false;
for(let key in availabilityTimes)
{
    isValid = availabilityTimes[key].weekday === moment().format('dddd');    
    if(isValid)
    {
        if(availabilityTimes[key].times.length == 0)
        {
            isValid = false;
            continue;
        }

        for(let time in availabilityTimes[key].times)
        {
            let startTime = Date.parse("1900-01-01 " + time.startTime);
            let endTime = Date.parse("1900-01-01 " + time.endTime);
            let nowTime = Date.parse("1900-01-01 " + moment().format('HH:mm')); 

            isValid = nowTime >= startTime && nowTime <= endTime;
            if(isValid)
            {   
                break;
            }
        }

        if(isValid)
        {
            break;
        }
    }
}
console.log(isValid);

希望它有所帮助。

最诚挚的问候,

Hatjhie