/
calendar.js
56 lines (44 loc) · 1.32 KB
/
calendar.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
function calculateDayInYear(date) {
var splitDate = date.split('/');
var year = Number(splitDate[0]);
var month = Number(splitDate[1]);
var day = Number(splitDate[2]);
var febDays = daysInFeb(year);
var DAYS_IN_MONTH = [31, febDays, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// console.log(year);
// console.log(validMonth(month));
// console.log(validDay(month, day));
if (year && validMonth(month) && validDay(month, day)) {
console.log(date, "is day", calculateDayNumber(month, day), "of the year", year);
} else {
console.log("Invalid date");
}
function validMonth(month) {
return month && month >= 1 && month <= 12;
}
function validDay(month, day) {
return day && day >= 1 && day <= DAYS_IN_MONTH[month - 1];
}
function calculateDayNumber(month, day) {
var dayOfYear = day;
for (var i = 1; i < month; i++) {
dayOfYear += DAYS_IN_MONTH[i - 1];
}
return dayOfYear;
}
function daysInFeb(year) {
return 28;
}
function isLeapYear(year) {
return isMultiple(year, 400) || !isMultiple(year, 100) && isMultiple(year, 4);
}
}
function isMultiple(numerator, denominator) {
return numerator % denominator === 0;
}
var date = process.argv[2];
if (!date) {
console.log("Please provide a date in the format YYYY/MM/DD");
} else {
calculateDayInYear(date);
}