GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Definir o ultimo dia de cada mes em Js

#1

Bom galera, eu estou com um código onde eu tenho um campo valor_parcela e 2 campos data (inicio_parcela e fim_parcela). O código automatiza o preenchimento de uma tabela colocando o valor da parcela mais a data de vencimento para cada parcela. Eu estou enfrentando um problema que creio que seja bobo, mas como estou iniciando ainda não estou tendo uma visão clara de como solucionar: Eu preciso que dado um exemplo de valor: 200, colocando o ultimo dia do mês de janeiro (31/01/2019) e o ultimo dia do mês de maio (31/05/2019) ele me mostre na saída para a tabela os meses (31/01/2019 - 28/02/2019 - 31/03/2019 - 30/04/2019 - 31/05/2019). segue código:

<script>
    function GerarTabela() {
            var valor = $("#txtParcela").val();
            var data1 = $("#datepicker1").val();
            var data2 = $("#datepicker2").val();
            var tabela = $(".myBody");
            tabela.empty();
            var rs = "R$ ";
            var valor_completo = `${rs} ${valor}`;

            if (valor == null || valor == "") {
                alert("Inserir valor da Parcela.");
            } else if (data1 == null || data1 == "") {
                alert("Inserir data primeiro dia.");
            } else if (data2 == null || data2 == "") {
                alert("Inserir data ultimo dia.");
            } else {
                var d1_array = data1.split("/");
                var d2_array = data2.split("/");

                var data_ini = new Date(d1_array[2], d1_array[1]-1, d1_array[0]);
                var data_fim = new Date(d2_array[2], d2_array[1]-1, d2_array[0]);

                while (data_ini <= data_fim) {

                    var dia = data_ini.getDate().toString();
                    var mes = (data_ini.getMonth() + 1).toString();          


                    var data = (dia.length == 1 ? "0" + dia : dia) + "/" + (mes.length == 1 ? "0" + mes : mes) + "/" + data_ini.getFullYear();

                    tabela.append(`<tr><td>${data}</td><td>${valor_completo}</td></tr>`);
                    data_ini.setMonth(data_ini.getMonth() + 1);
                }
            }
        }
</script>
<html>

Valor: <input type="text" id="txtParcela" value="200">
<br>
Data1: <input type="text" id="datepicker1" value="2019/04/17">
<br>
Data2: <input type="text" id="datepicker2" value="2019/06/17">
<br>
<button onClick="GerarTabela()">Gerar</button>
<br>
<table class="myBody"></table>

</html>
0 Likes

#2

Seria isso?

<html>

<head>
	<title>Tabela</title>
</head>

<body>
	Valor: <input type="text" id="txtParcela" value="200">
	<br>
	
	Data1: <input type="text" id="datepicker1" value="31/01/2019">
	<br>
	
	Data2: <input type="text" id="datepicker2" value="31/05/2019">
	<br>
	
	<button onClick="GerarTabela()">Gerar</button>
	<br>
	
	<table class="myBody"></table>
	
	<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
	
	<script>
		function GerarTabela() {
			var valor = $("#txtParcela").val();
			var data1 = moment($("#datepicker1").val(), 'DD/MM/YYYY');
			var data2 = moment($("#datepicker2").val(), 'DD/MM/YYYY');
            var tabela = $(".myBody");
            tabela.empty();
            var rs = "R$ ";
            var valor_completo = `${rs} ${valor}`;
			
            if (valor == null || valor == "") {
                alert("Inserir valor da Parcela.");
            } else if (data1 == null || data1 == "") {
                alert("Inserir data primeiro dia.");
            } else if (data2 == null || data2 == "") {
                alert("Inserir data ultimo dia.");
            } else {
                var monthStart = parseInt(data1.format('MM'));
                var monthEnd = parseInt(data2.format('MM'));
				
                for(var i = monthStart; i <= monthEnd; i++) {
					var data = moment(data1).month(i-1).format('DD/MM/YYYY');
					
					tabela.append(
						`<tr>` +
						`	<td>${data}</td>` +
						`	<td>${valor_completo}</td>` +
						`</tr>`
					);
                }
            }
        }
	</script>
</body>

</html>
0 Likes