I'm trying to make a Livestream feature in my project, I have an array of programs (videos), every video has startDate and endDate. I should run every video when its time has come.
const programs = [
{ video: "URL", startDate: 1644405993, endDate: 1644406032 },
{ video: "URL", startDate: 1644405993, endDate: 1644406032 },
{ video: "URL", startDate: 1644405993, endDate: 1644406032 },
{ video: "URL", startDate: 1644405993, endDate: 1644406032 }
];
CodePudding user response:
You can get a new date and compare it against your stored dates (though you appear to have not stored the dates as correct date-timestamps). The item you are after is the one with a startDate less than current and end endDate greater than current. This will also give an empty array if no matches found - so you will need to have a check against the returned matches length.
const programs = [
{ video: "URL1", startDate: 1644492517146, endDate: 1644492517446 },
{ video: "URL2", startDate: 1644492517726, endDate: 1644492517646 },
{ video: "URL3", startDate: 1644492507746, endDate: 1644492517546 },
{ video: "URL4", startDate: 1644492517746, endDate: 16474492519746 }
];
const now =new Date().getTime(); // gives similar to 1644492517146
const currentProgram = programs.filter(
p => new Date(p.startDate) < now && new Date(p.endDate) > now
);
console.log(currentProgram) // gives [{ video: "URL4", startDate: 1644492517746, endDate: 16474492519746 }]
CodePudding user response:
You can check by calling this function.
function compareDates(startDate,endDate){
let current=new Date();
return startDate>=current && endDate<=current;
}
CodePudding user response:
try this
export const checkTime = (startDate, endDate) => {// startDate= 1644405993, endDate = 1644406032
const now = new Date()
const bookingStartDate = new Date(startDate) // use this step to convert your date if its stored in a different format
const bookingEndDate = new Date(endDate) // use this step to convert your date if its stored in a different format
return now.getTime() > bookingStartDate.getTime() && now.getTime() < bookingEndDate.getTime()
}
CodePudding user response:
You can try this
const programs = [
{ video: "URL", startDate: 1644405993, endDate: 1644406032 },
{ video: "URL", startDate: 1644405993, endDate: 1644406032 },
{ video: "URL", startDate: 1644405993, endDate: 1644406032 },
{ video: "URL", startDate: 1644405993, endDate: 1644406032 }
];
let currentTime = new Date().toLocaleTimeString("en-US");
for(let pg of programs){
let startDate = new Date(pg.startDate).toLocaleTimeString("en-US");
let endDate = new Date(pg.endDate).toLocaleTimeString("en-US");
console.log({
startDate:startDate,
endDate:endDate,
currentTime:currentTime
})
if (currentTime >= startDate && currentTime < endDate){
console.log("Current time in between start and end time");
}
}