如果当前时间在 json 数据的开始和结束时间之间,则显示数据
Show data if current time is between start and end time of json data
我正在尝试在我的代码中实现一些功能,但我很难达到最终结果。
假设我有一个包含这些字段的 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 }
)
在这种情况下,您将不得不使用带字符串和格式的 moment 构造函数将 "10:30"
转换为 moment 对象。
moment(String, String);
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>
我正在尝试在我的代码中实现一些功能,但我很难达到最终结果。 假设我有一个包含这些字段的 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 }
)
在这种情况下,您将不得不使用带字符串和格式的 moment 构造函数将 "10:30"
转换为 moment 对象。
moment(String, String);
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>