evandrofelipe 0 Denunciar post Postado Outubro 8, 2020 boa tarde pessoal! eu não entendo muito de javascript. eu preciso informar uma data e somar n meses a ela prevendo inclusive que a nova data pode cair em um próximo ano. depois de algumas pesquisas fiz o abaixo, mas não funcionou: function calculadata() { var data = new Date(document.getElementById("cdata1").value); data.setMonth(data.getMonth() + document.getElementById("cparcela").value); var minhaData = data.getDate() + '/' + data.getMonth() + '/' + data.getFullYear(); document.getElementById("cdata2").value = minhaData; } agradeço desde já a ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
Omar~ 87 Denunciar post Postado Outubro 9, 2020 Bom eu nunca mexi com datas para uma aplicação com javascript, pelo fato que a data é definida pelo hardware do usuário, ou seja se ele estiver com a data errada pode trazer diversos problemas se for usado em validação com como informação, é essencial usar algo no servidor. Mas pelo que me lembro da época que estudei a respeito isso aqui já deveria apresentar o resultado esperado: 10 horas atrás, evandrofelipe disse: data.setMonth(data.getMonth() + document.getElementById("cparcela").value); No entanto o value de um input é sempre STRING então converta para inteiro usando a função parseInt(); O problema que vejo e não entendo a necessidade é de calcular de uma data específica ao invés da data atual. Resolvi brincar aqui e consegui usando dois objetos da função date(); Bastando eu definir uma data inicial em um objeto e definindo o final no outro. var dataA = new Date(); var dataB = new Date(); dataA.setYear(2020); // Definindo o ano de início dataA.setMonth(10); // Definindo o mês de início dataB.setMonth(dataA.getMonth() + 12); // Calculando os meses com relação a data anterior var resultado = dataB.getDate() + '/' + dataB.getMonth() + '/' + dataB.getFullYear(); console.log(resultado); Mas como disse, se vai usar esse tipo de informação para registro está cometendo um grave erro. Compartilhar este post Link para o post Compartilhar em outros sites
evandrofelipe 0 Denunciar post Postado Outubro 9, 2020 Fala amigo. Obrigado pela resposta. Fiz o teste com o que postou e funcionou. Creio que atenda a sua necessidade, mas não ficou dentro do que preciso. E não há nada de errado em somar parcelas a uma data inicial de um contrato e o sistema calcular automaticamente a data do término do contrato. Talvez o erro maior seja opinar sem ter conhecimento do projeto. É sempre mais interessante focar na resolução do problema. Agradeço ao amigo Jack por ter me ajudado dentro do problema que tinha. De qualquer forma, obrigado novamente. Compartilhar este post Link para o post Compartilhar em outros sites
wanderval 19 Denunciar post Postado Outubro 9, 2020 Outra opção seria usar uma lib especifica para manipulação de datas caso essa manipulação possa ficar mais ampla, assim terá um suporte maior, envolvendo dias, mês, ano e locale caso precise tratar dados com fuso horário diferente, e mais simples de manipular formatos diferentes como timestamps. uma delas é o day.js url cdn:https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.9.1/dayjs.min.js // Acresncentando Meses console.log(dayjs().add(2, 'month').format('DD-MM-YYYY')); // Acrescentando Dias console.log(dayjs('2020-10-12').add(5, 'day').format('DD-MM-YYYY')); link JSbin: https://jsbin.com/negavetove/edit?html,js,console Compartilhar este post Link para o post Compartilhar em outros sites
evandrofelipe 0 Denunciar post Postado Outubro 20, 2020 Em 09/10/2020 at 20:36, wanderval disse: Outra opção seria usar uma lib especifica para manipulação de datas caso essa manipulação possa ficar mais ampla, assim terá um suporte maior, envolvendo dias, mês, ano e locale caso precise tratar dados com fuso horário diferente, e mais simples de manipular formatos diferentes como timestamps. uma delas é o day.js url cdn:https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.9.1/dayjs.min.js // Acresncentando Meses console.log(dayjs().add(2, 'month').format('DD-MM-YYYY')); // Acrescentando Dias console.log(dayjs('2020-10-12').add(5, 'day').format('DD-MM-YYYY')); link JSbin: https://jsbin.com/negavetove/edit?html,js,console Obrigado Walderval! Compartilhar este post Link para o post Compartilhar em outros sites