为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

小唯快跑啊 2023-05-11 13:21:14
我正在尝试在我的代码中实现一些功能,但我正在努力达到最终结果。假设我有一个包含这些字段的 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 })
查看完整描述

1 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

在这种情况下,您将不得不使用带有字符串和格式的 moment 构造函数来转换"10:30"为 moment 对象。


时刻(字符串,字符串);


const items = [{

    "id": 1,

    "genre": "Comedy",

    "startTime": "10:00",

    "endTime": "10:30"

  },

  {

    "id": 2,

    "genre": "horror",

    "startTime": "22:00",

    "endTime": "23:30"

  }];

  

const actives = items.filter(item => {

  const startMoment = moment(item.startTime, "HH[:]mm"); // Create moment object

  const endMoment = moment(item.endTime, "HH[:]mm"); // Create moment object

  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>



查看完整回答
反对 回复 2023-05-11
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信