0
How can I add only the days of the month into an array by removing Saturday and Sunday?
user will inform the month and the year and with this month I pick up the days.
ex:
March 2018
1 2 5 6 7 8 9 12 13 14 15 16 19 20 21 22 23 26 27 28 29 30
0
How can I add only the days of the month into an array by removing Saturday and Sunday?
user will inform the month and the year and with this month I pick up the days.
ex:
March 2018
1 2 5 6 7 8 9 12 13 14 15 16 19 20 21 22 23 26 27 28 29 30
1
Without the Moment-js, why... put an entire lib just for this until the C:
function getWeekDaysInMonth(month = 0, year = 2018) {
console.log('Weekdays for', new Date(year, month, 1).toString())
return new Array(new Date(year, month+1, 0).getDate()).fill().map((n, i) => {
const weekDay = new Date(year, month, ++i).getDay();
return weekDay > 0 && weekDay < 6 && i;
}).filter(val => !!val);
}
console.log(getWeekDaysInMonth(2, 2018))
Outputs: [ 1, 2, 5, 6, 7, 8, 9, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30 ]
Explaining:
First we’ll have to iterate through the total days of the month that is provided, in this case Marco (0 based, then 2) - this loop is done by constructing an array of length equal to the maximum days of the month that is then filled with "nothing" (via fill()
and iterated by map()
.
then we have to see if the day of the week of that date is greater than 0 (Sunday) or 6 (Saturday) and if yes, return the day of the month.
once this mapping is over, we will filter from the array all values that are not positive.
:)
0
Recently I had to recover all the Sundays, as Farms and the Saturdays of the current month to generate a scale. I found the plugin Moment-weekdaysin to the library Moment js..
You must perform the moment
passing as parameter the year and month that the user informs: moment('2018-03')
Then you must execute the method weekdaysInMonth
of the plugin Moment-weekdaysin, informing a array
with values of 0 to 6.
0 = Domingo
1 = Segunda
2 = Terça
3 = Quarta
4 = Quinta
5 = Sexta
6 = Sábado
Like you just want to Second à Sixth had turned out like this: weekdaysInMonth([1,2,3,4,5])
// Define o idioma
moment.locale('pt-br');
let btn = document.querySelector('#btn');
let mes = document.querySelector('#mes');
let ano = document.querySelector('#ano');
const getDaysOfMonth = () => {
const datas = moment(`${ano.value}-${mes.value}`).weekdaysInMonth([1,2,3,4,5]);
datas.forEach(data => console.log(data.format('L')));
};
btn.addEventListener('click', getDaysOfMonth);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.21.0/moment.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.21.0/moment-with-locales.js"></script>
<script src="https://cdn.rawgit.com/kodie/moment-weekdaysin/master/moment-weekdaysin.js"></script>
<input type="number" id="mes" placeholder="Mês" min="1" max="12" value="3">
<input type="number" id="ano" placeholder="Ano" min="1990" max="2050" value="2018">
<button id="btn">OK</button>
Browser other questions tagged javascript typescript
You are not signed in. Login or sign up in order to post.
I suggest you take a look at Moment.js
– dsantoro