cpt-waffle-lotide
Version:
LoTide in Typescript
52 lines (51 loc) • 1.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const DAYS_IN_MONTH = [31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
const validMonth = (month) => month >= 1 && month <= 12;
const validDay = (month, day) => {
return day >= 1 && day <= DAYS_IN_MONTH[month - 1];
};
const calculateDayNumber = (month, day) => {
let dayOfYear = day;
for (let i = 1; i < month; i++) {
dayOfYear += DAYS_IN_MONTH[i - 1];
}
return dayOfYear;
};
const isMultiple = (numerator, denominator) => {
return numerator % denominator === 0;
};
const isLeapYear = (year) => {
const isMultipleFour = isMultiple(year, 4);
const isMultipleOneHundred = isMultiple(year, 100);
const isMultipleFourHundred = isMultiple(year, 400);
if (!isMultipleFour) {
return false;
}
else if (isMultipleFour && !isMultipleOneHundred) {
return true;
}
else {
if (isMultipleOneHundred && !isMultipleFourHundred) {
return false;
}
else {
return true;
}
}
};
const calculateDayInYear = (date) => {
const splitDate = date.split('/');
const [year, month, day] = splitDate.map((val) => Number(val));
DAYS_IN_MONTH[1] = isLeapYear(year) ? 29 : 28;
if (validMonth(month) && validDay(month, day)) {
const result = calculateDayNumber(month, day);
console.log(date, "is day", result, "of the year", year);
return result;
}
else {
console.log("Invalid date");
return -1;
}
};
exports.default = calculateDayInYear;