如果当前时间在 json 数据的开始和结束时间之间,则显示数据

我正在尝试在我的代码中实现一些功能,但我正在努力达到最终结果。假设我有一个包含这些字段的 json 文件:


{

    "id": 1,

    "genre": "Comedy",

    "startTime": "10:00",

    "endTime": "10:30"

}


{

    "id": 2,

    "genre": "horror",

    "startTime": "22:00",

    "endTime": "23:30"

}

我想做的只是显示具有以下条件的数据:


if currentTime is between startTime && endTime 

目前我得到的结果是一个数组中的所有对象都被一个一个显示(它应该只显示开始和结束时间内的对象)。所以,进一步澄清一下:如果当前时间是 10:10,我应该只看到“喜剧”类型。


代码(我正在使用 moment js)。


const [active, setActive] = useState(0);


useEffect(() => {

    let currentTime = moment().format("hh:mm")

    const intervalId = setInterval(() => {

        if (moment(currentTime).isBetween(exampleData.startTime), (exampleData.endTime)) {

            setActive((active) => (active + 1) % data.example.length);

        } else {

            return () => clearInterval(intervalId);

        }

    }, 5000);

}, []);


const cData = data.exampleData[active];


return (

    { cData.genre }

)


小唯快跑啊
浏览 110回答 1
1回答

蓝山帝景

在这种情况下,您将不得不使用带有字符串和格式的 moment 构造函数来转换"10:30"为 moment 对象。时刻(字符串,字符串);const items = [{&nbsp; &nbsp; "id": 1,&nbsp; &nbsp; "genre": "Comedy",&nbsp; &nbsp; "startTime": "10:00",&nbsp; &nbsp; "endTime": "10:30"&nbsp; },&nbsp; {&nbsp; &nbsp; "id": 2,&nbsp; &nbsp; "genre": "horror",&nbsp; &nbsp; "startTime": "22:00",&nbsp; &nbsp; "endTime": "23:30"&nbsp; }];&nbsp;&nbsp;const actives = items.filter(item => {&nbsp; const startMoment = moment(item.startTime, "HH[:]mm"); // Create moment object&nbsp; const endMoment = moment(item.endTime, "HH[:]mm"); // Create moment object&nbsp; return moment().isBetween(startMoment, endMoment); // Compare with current time});console.log(actives);<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript