-
Notifications
You must be signed in to change notification settings - Fork 0
/
2023-07-06.js
31 lines (24 loc) · 1.31 KB
/
2023-07-06.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
// https://www.codewars.com/kata/5a0d6d8c6975982b5b000383/train/javascript
function lastDayIsFriday( initialYear, endYear ) {
if ( !endYear ) endYear = initialYear;
let lastFridays = 0;
for ( let year = initialYear; year <= endYear; year++ ) { // iterate years range
for ( let month = 1; month <= 12; month++ ) { // iterate 12 month
const lastDayOfMonth = new Date( year, month, 0 ); // construct new Date, while "0" represents last day in month (28/29/30/31): 1991-11-31
if ( lastDayOfMonth.getDay() === 5 ) lastFridays++; // .getDay() returns 0-6, representing weekdays: sunday - saturday
}
}
return lastFridays;
}
console.log( lastDayIsFriday( 1901, 2000 ) ); // :>> 171
console.log( lastDayIsFriday( 1901, 2017 ) ); // :>> 200
console.log( lastDayIsFriday( 1991 ) ); // :>> 1
console.log( lastDayIsFriday( 2017 ) ); // :>> 2
console.log( lastDayIsFriday( 1997, 2042 ) ); // :>> 81
console.log( lastDayIsFriday( 1906, 1912 ) ); // :>> 11
// TESTING:
const weekday = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ];
const lastDayOfMonth = new Date( 2018, 11, 0 );
lastDayOfMonth; // :>> Fri Nov 30 2018 00:00:00 GMT+0100 (CEST)
console.log( weekday[lastDayOfMonth.getDay()] ); // :>> Friday
if ( weekday[lastDayOfMonth.getDay()] === 'Friday' ) console.log( true ); // :>> true