Задача №9
Користувачка планувала оформила декретну відпустку на 200 днів (дата початку відпустки вводиться). Визначити чи відпустка вже триває і чи не закінчилась.
Рішення:
'use strict'
/**
* @param {Date} startDate
* @param {number} durationDays
*/
function getVacationInfo(startDate, durationDays) {
const endDate = structuredClone(startDate) // we don't want to mutate the passed date
endDate.setDate(endDate.getDate() + durationDays)
const nowDate = new Date()
return {
isActive: endDate - nowDate > 0 && nowDate - startDate >= 0,
hasEnded: nowDate - endDate >= 0,
}
}
/**
* @param {SubmitEvent} e
*/
function handleVacation(e) {
e.preventDefault()
const dateEl = document.querySelector('.js-date')
const date = new Date(dateEl.value)
const inputEl = document.querySelector('.js-duration')
const durationDays = Number(inputEl.value)
const {isActive, hasEnded} = getVacationInfo(date, durationDays)
const outputEl = document.querySelector('.js-output')
outputEl.innerText = `Триває: ${isActive ? 'так' : 'ні'}\nЗакінчилася: ${hasEnded ? 'так' : 'ні'}`
}
const formEl = document.querySelector('.js-form')
formEl?.addEventListener('submit', handleVacation)
