Ir para conteúdo
Fórum Script Brasil
  • 0

Subtração de datas


Juliano AXA

Pergunta

Boa tarde !!

eu tenho essas funções abaixo porem to com problemas na função de subtrair quando chega no dia 01 e eu mando subtrair mais 1 dia ele vai pra zero ao envés pular pro ultimo dia do mes anterior. alguém pode me da uma força ?

/************************************************************** Somar ***************************************************************************/
function numdias(mes,ano) {
    if((mes<8 && mes%2==1) || (mes>7 && mes%2==0)) return 31;
    if(mes!=2) return 30;
    if(ano%4==0) return 29;
    return 28;
}

function somadias(data, dias) {
   data=data.split('-');
   diafuturo=parseInt(data[0])+dias;
   mes=parseInt(data[1]);
   ano=parseInt(data[2]);
   while(diafuturo>numdias(mes,ano)) {
       diafuturo-=numdias(mes,ano);
       mes++;
       if(mes>12) {
           mes=1;
           ano++;
       }
   }

   if(diafuturo<10) diafuturo='0'+diafuturo;
   if(mes<10) mes='0'+mes;

   return diafuturo+"-"+mes+"-"+ano;
}
/************************************************************** subtrair ***************************************************************************/

function subtrairdias(data, dias) {
   data=data.split('-');
   diafuturo=parseInt(data[0])-dias; 
   mes=parseInt(data[1]);
   ano=parseInt(data[2]);
   while(diafuturo<numdias(mes,ano)) {
       diafuturo-=numdias(mes,ano);
       mes--;
       if(mes>12) {
           mes=1;
           ano--;
       }
   }

   if(diafuturo<10) diafuturo='0'+diafuturo;
   if(mes<10) mes='0'+mes;

   return diafuturo+"-"+mes+"-"+ano;
} 
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

depois de pensar um pouco consegui resolve.

se alguém precisar ta ai

function subtrairdias(data, dias) {
   data=data.split('-');
   dianterior=parseInt(data[0])-dias;
   mes=parseInt(data[1]);
   ano=parseInt(data[2]);
  
  if(dianterior=='0'){
	  mes--;
	  dianterior=(numdias(mes,ano));
	  }else{ 
	   while(dianterior>numdias(mes,ano)) {
		   dianterior+=numdias(mes,ano);
		   mes--;
		   if(mes>12) {
			   mes=1;
			   ano--;
		   }
   }}

   if(dianterior<10) dianterior='0'+dianterior;
   if(mes<10) mes='0'+mes;

   return dianterior+"-"+mes+"-"+ano;

}
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...