By using pure javascript, i want to predict a future date and past date based on the user input date. considering lotto draw happens every wednesday and saturday at 8pm.
I have the code logic, but i need some help to finish this logic.
then main problem is to find the correct past and future dates. please help me.
function getNextLottoDraw(date) {
const dayOfWeek = date.getDay(); // dayOfWeek = day of the week 0 - 6 (sun - sat)
const hour = date.getHours(); // hour as per pm/am
const minute = date.getMinutes(); // Mins as mins
let nextDraw = new Date(date);
// console.log("r--->", nextDraw );
if (dayOfWeek === 3) { // Wednesday
if (hour < 20 || (hour === 20 && minute === 0)) {
nextDraw.setHours(20, 0, 0, 0);
// console.log("p1--->", nextDraw );
} else {
nextDraw.setDate(nextDraw.getDate() + 3); // Next draw is Saturday
// console.log("p2--->", nextDraw );
nextDraw.setHours(20, 0, 0, 0);
// console.log("p2 22--->", nextDraw );
}
} else if (dayOfWeek === 6) { // Saturday
if (hour < 20 || (hour === 20 && minute === 0)) {
nextDraw.setHours(20, 0, 0, 0);
// console.log("W11---->", nextDraw );
} else {
nextDraw.setDate(nextDraw.getDate() + 4); // Next draw is Wednesday
nextDraw.setHours(20, 0, 0, 0);
// console.log("W22---->", nextDraw );
}
} else {
// console.log("else--->>");
let daysToAdd;
if (dayOfWeek < 3) { // Before Wednesday
daysToAdd = 3 - dayOfWeek;
// console.log("D11---->", daysToAdd, dayOfWeek );
} else { // After Wednesday, before Saturday
daysToAdd = 6 - dayOfWeek;
// console.log("D22---->", daysToAdd, dayOfWeek );
}
nextDraw.setDate(nextDraw.getDate() + daysToAdd);
nextDraw.setHours(20, 0, 0, 0);
// console.log("last --->", nextDraw);
}
return nextDraw;
}
function calculateDrawDates() {
const input = document.getElementById('datetime-input').value;
const inputDate = new Date(input);
if (isNaN(inputDate)) {
alert('Please enter a valid date and time.');
return;
}
const resultsTable = document.getElementById('results-table').querySelector('tbody');
resultsTable.innerHTML = ''; // Clear previous results
const draws = [];
let nextDrawDate = getNextLottoDraw(inputDate);
console.log("result for future draws --->",nextDrawDate )
for (let i = -2; i <= 2; i++) {
let currentDrawDate = new Date(nextDrawDate);
if (i < 0) {
currentDrawDate.setDate(nextDrawDate.getDate() + i * 3); // For past dates, subtract 3 days per draw
} else if (i > 0) {
if(nextDrawDate.getDay() === 6) {
currentDrawDate.setDate(nextDrawDate.getDate() + 4);
console.log("mmm11---", currentDrawDate);
} else {
currentDrawDate.setDate(nextDrawDate.getDate() + 3);
console.log("mmm22---", currentDrawDate);
}
}
draws.push({
date: currentDrawDate,
status: currentDrawDate < inputDate ? 'Past' : 'Future'
});
}
draws.forEach(draw => {
const row = document.createElement('tr');
const dateCell = document.createElement('td');
const statusCell = document.createElement('td');
dateCell.textContent = draw.date.toDateString();
statusCell.textContent = draw.status;
row.appendChild(dateCell);
row.appendChild(statusCell);
row.classList.add('fade-in');
resultsTable.appendChild(row);
});
}
New contributor
Raj sri Selvam is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.