titulo

Primeira segunda-feira do mês

by Gustavo Adolfo A. S.

HTML

<p>
Data Inicial: <spam id="dataInicial"></spam><br/>
Data Final: <spam id="dataFinal"></spam> 
</p>
<hr/>
<div id="lista">

</div>
<hr />
<div id="lista2">

</div>

JavaScript

let dataInicial = new Date(2019, 4, 6);
const dataFinal = new Date(2019, 9, 10);

document.getElementById('dataInicial').innerText = dataInicial.toString();
document.getElementById('dataFinal').innerText = dataInicial.toString();

let dias = 7;
let intervalo = dias * 24 * 60 * 60 * 1000;
const diaDaSemanaDesejado = 1; // segunda-feira

let dataReferencia = dataInicial;

let datas = [];

while(dataReferencia < dataFinal) {
	let diaAtual = dataReferencia.getDay();
  let diferencaEmDias =0, novoIntervalo = 0;
  
	if (diaAtual == diaDaSemanaDesejado) {
  	let textnode = document.createTextNode(`Nova data: ${dataReferencia}`);
    document.getElementById('lista').appendChild(textnode);
  } else if (diaAtual < diaDaSemanaDesejado) {
  	alert('2');
  	diferencaEmDias = diaAtual - diaDaSemanaDesejado;
    novoIntervalo = diferencaEmDias * 24 * 60 * 60 * 1000;
    dataReferencia = new Date(dataReferencia.getTime() + novoIntervalo);
    let textnode = document.createTextNode(`Nova data: ${dataReferencia}`);
    document.getElementById('lista').appendChild(textnode);
  } else {
  	alert('3');
  	diferencaEmDias = diaDaSemanaDesejado - diaAtual;
    novoIntervalo = diferencaEmDias * 24 * 60 * 60 * 1000;
    dataReferencia = new Date(dataReferencia.getTime() - novoIntervalo);
    let textnode = document.createTextNode(`Nova data: ${dataReferencia}`);
    document.getElementById('lista').appendChild(textnode);
  }
  
  if(datas.length > 0) {
  	// alert(dataReferencia.getMonth());
    let filtroDatas = datas.filter(d => { 
    if (d.getMonth() ==  dataReferencia.getMonth()) { 
        return d; 
      }
    });
    if(filtroDatas.length < 1) {
      datas.push(dataReferencia);
      }
  } else {
  	datas.push(dataReferencia);
  }
  
  document.getElementById('lista').appendChild(document.createElement('BR'));
  dataReferencia = new Date(dataReferencia.getTime() + intervalo);
}

if (datas) {
	datas.forEach(d => {
  	let p =...