Tenho um cálculo que faz a diferença entre duas datas na seguinte ordem:
1-Diferença entre Data1 e Data2 (parametros: anos=365 e meses=30 dias), resultado em dia,mes,ano
2-Conversão do resultado para exibir em dias usando os mesmos parametros.
Conforme imagem a conversão dos periodos para dias está ok, a soma das colunas está ok, mas o resultado em dias da soma dos meses por extenso não confere.
Olá, Comunidade!
Vocês devem ter notado que o site ficou um período fora do ar (do dia 26 até o dia 30 de maio de 2024).
Consegui recuperar tudo, e ainda fiz um UPGRADE no servidor! Agora estamos em um servidor dedicado no BRASIL!
Isso vai fazer com que o acesso fique mais rápido (espero )
Já arrumei os principais bugs que aparecem em uma atualização!
Mas, se você encontrar alguma coisa diferente, que não funciona direito, me envie uma MP avisando que eu arranjo um tempo pra arrumar!
Vamos crescer essa comunidade juntos
Grande abraço a todos,
Prof. Caju
Vocês devem ter notado que o site ficou um período fora do ar (do dia 26 até o dia 30 de maio de 2024).
Consegui recuperar tudo, e ainda fiz um UPGRADE no servidor! Agora estamos em um servidor dedicado no BRASIL!
Isso vai fazer com que o acesso fique mais rápido (espero )
Já arrumei os principais bugs que aparecem em uma atualização!
Mas, se você encontrar alguma coisa diferente, que não funciona direito, me envie uma MP avisando que eu arranjo um tempo pra arrumar!
Vamos crescer essa comunidade juntos
Grande abraço a todos,
Prof. Caju
MATEMÁTICA APLICADA ⇒ Soma de diferença entre datas não confere Tópico resolvido
Moderador: [ Moderadores TTB ]
Fev 2016
01
14:56
Soma de diferença entre datas não confere
Editado pela última vez por alebarros em 01 Fev 2016, 14:56, em um total de 1 vez.
-
- Mensagens: 5114
- Registrado em: 22 Jun 2012, 22:03
- Última visita: 17-04-23
- Agradeceu: 355 vezes
- Agradeceram: 2801 vezes
Fev 2016
01
22:26
Re: Soma de diferença entre datas não confere
Olá, alebarros.
O problema ocorre quando você converte 12 meses em 1 ano.
De acordo com os seus parâmetros:
1 mês = 30 dias e, portanto, 12 meses = 360 dias
1 ano = 365 dias
Assim, quando você transforma 17 meses em 12+5 e "sobe o doze", está incluindo 5 dias na conta.
Solução: considere que um ano possui 360 dias.
O problema ocorre quando você converte 12 meses em 1 ano.
De acordo com os seus parâmetros:
1 mês = 30 dias e, portanto, 12 meses = 360 dias
1 ano = 365 dias
Assim, quando você transforma 17 meses em 12+5 e "sobe o doze", está incluindo 5 dias na conta.
Solução: considere que um ano possui 360 dias.
Fonte: Wikipédia.Ano comercial
Chama-se ano comercial o período de tempo em que se considera que o ano tem 360 dias e cada um dos meses 30 dias, indistintamente.
É utilizado na contabilidade e também na matemática financeira com o objetivo de simplificar os cálculos com datas.
Editado pela última vez por csmarcelo em 01 Fev 2016, 22:26, em um total de 1 vez.
Fev 2016
02
08:32
Re: Soma de diferença entre datas não confere
Obrigado csmarcelo pela atenção, mas acontece que não posso mudar essa regra, é a forma como é calculado o tempo de serviço do inss. Veja nesta imagem de um documento do Próprio instituto informando o tempo.
2 meses = 60 dias
1 dia
total = anos + meses + dias => 2251
Ano Comercial
6 anos = 2160 dias
2 meses = 60 dias
1 dia
total = anos + meses + dias => 2221
6 anos = 2190 dias2 meses = 60 dias
1 dia
total = anos + meses + dias => 2251
Ano Comercial
6 anos = 2160 dias
2 meses = 60 dias
1 dia
total = anos + meses + dias => 2221
Editado pela última vez por alebarros em 02 Fev 2016, 08:32, em um total de 1 vez.
-
- Mensagens: 5114
- Registrado em: 22 Jun 2012, 22:03
- Última visita: 17-04-23
- Agradeceu: 355 vezes
- Agradeceram: 2801 vezes
Fev 2016
02
10:19
Re: Soma de diferença entre datas não confere
Creio que, nesse caso, a forma mais simples de se resolver isso seja somar os períodos em dias e depois converter para o formato ano/mês/dia.
7954+4970 = 12924 = 35 anos, 4 meses, 29 dias
7954+4970 = 12924 = 35 anos, 4 meses, 29 dias
Fev 2016
02
16:31
Re: Soma de diferença entre datas não confere
Minha situação é que sempre vou ter duas datas:
Despois do resultado em dias como faço a conversão para dias,meses e anos?
16/12/1998
28/02/1977
---------------------
dias
como resolvo essa subtração retornando em dias?28/02/1977
---------------------
dias
Despois do resultado em dias como faço a conversão para dias,meses e anos?
Editado pela última vez por alebarros em 02 Fev 2016, 16:31, em um total de 1 vez.
-
- Mensagens: 5114
- Registrado em: 22 Jun 2012, 22:03
- Última visita: 17-04-23
- Agradeceu: 355 vezes
- Agradeceram: 2801 vezes
Fev 2016
03
07:14
Re: Soma de diferença entre datas não confere
Creio que você só precisa implementar agora volta (dias para ano/mês/dias), porque, pelo que eu entendi, o restante você já faz.
Segue algoritmo que calcula anos, meses e dias, tendo como parâmetro o total de dias.
Parâmetro de entrada: totalDias
anos = totalDias / 365
totalDias = totalDias - anos*365
meses = totalDias / 30
totalDias = totalDias - meses*30
dias = totalDias
Faça 1 e 2 para cada período. Depois, basta somar todas as quantidades de dias encontradas e aí fazer a volta, ou seja, no seu exemplo, converter 12924 para 35 anos, 4 meses, 29 dias.Tenho um cálculo que faz a diferença entre duas datas na seguinte ordem:
1-Diferença entre Data1 e Data2 (parametros: anos=365 e meses=30 dias), resultado em dia,mes,ano
2-Conversão do resultado para exibir em dias usando os mesmos parametros.
Segue algoritmo que calcula anos, meses e dias, tendo como parâmetro o total de dias.
Parâmetro de entrada: totalDias
anos = totalDias / 365
totalDias = totalDias - anos*365
meses = totalDias / 30
totalDias = totalDias - meses*30
dias = totalDias
Editado pela última vez por csmarcelo em 03 Fev 2016, 07:14, em um total de 1 vez.
Fev 2016
03
08:19
Re: Soma de diferença entre datas não confere
csmarcelo, desculpe minha ignorância mas não entendi como aplicar o algorítimo poderia dar um exemplo.
Parâmetro de entrada: totalDias = 12924
totalDias = 3
Parâmetro de entrada: totalDias = 12924
anos = 12924/365 = 35,40anos = totalDias / 365
totalDias = 12924 - (35,40 * 365)totalDias = totalDias - anos*365
totalDias = 3
Editado pela última vez por alebarros em 03 Fev 2016, 08:19, em um total de 1 vez.
-
- Mensagens: 5114
- Registrado em: 22 Jun 2012, 22:03
- Última visita: 17-04-23
- Agradeceu: 355 vezes
- Agradeceram: 2801 vezes
Fev 2016
03
11:27
Re: Soma de diferença entre datas não confere
Você deve arredondar para baixo. Esqueci desse detalhe.
Parâmetro de entrada: totalDias
anos = int(totalDias / 365)
totalDias = totalDias - anos*365
meses = int(totalDias / 30)
totalDias = totalDias - meses*30
dias = totalDias
----------------------------------------
totalDias = 12924
anos = int(12924 / 365) = 35
totalDias = 12924 - 35*365 = 149
meses = int(149 / 30) = 4
totalDias = 149 - 4*30 = 29
dias = 29
Parâmetro de entrada: totalDias
anos = int(totalDias / 365)
totalDias = totalDias - anos*365
meses = int(totalDias / 30)
totalDias = totalDias - meses*30
dias = totalDias
----------------------------------------
totalDias = 12924
anos = int(12924 / 365) = 35
totalDias = 12924 - 35*365 = 149
meses = int(149 / 30) = 4
totalDias = 149 - 4*30 = 29
dias = 29
Editado pela última vez por csmarcelo em 03 Fev 2016, 11:27, em um total de 1 vez.
Jun 2018
25
23:02
Re: Soma de diferença entre datas não confere
Olá ... vou tentar ajudar sem entrar muito a fundo no problema concernente ao INSS ...
Primeiro faça o cálculo correto da diferença em dias considerando dias bissextos e meses com seus dias corretos ...
Janeiro ... Fevereiro ... etc ... 31 (28|29) 31 30 31 30 31 31 30 31 30 31 ...
Para saber se um ano é bissexto deve-se dividi-lo por 4 ... se o resto da divisão for zero é um ano bissexto exceto 1900 que fevereiro não teve 29 dias ...
Para um cálculo mais rápido ... porém não muito preciso ... calcula a diferença de ANOS somente por 365,25 (onde este valor multiplicado por 4 acrescentará em 1 dia cada 4 anos que ocorrer dentro da diferença)
Depois disso procure adaptar esse resultado da diferença em dias nos moldes do INSS ...
Depois eu volto ...
Exemplo ...
28/02/1977 a 16/12/1998
(1998 - 1977) x 365,25 = 7670.25 ==> 7670
01/1977 ==> 31
28/1977 ==> 28 + 31 = 59
01/1998 ==> 31
02/1998 ==> 28 (1998 / 4 = 499.5 ==> não é ano bissexto porque tem resto diferente de zero)
03/1998 ==> 31
04/1998 ==> 30
05/1998 ==> 31
06/1998 ==> 30
07/1998 ==> 31
08/1998 ==> 31
09/1998 ==> 30
10/1998 ==> 31
11/1998 ==> 30
12/1998 ==> 16 + 31 + 28 + ... + 30 = 350 - 59 + 7670 = 7961 dias de diferença
7961 dias de diferença
Primeiro faça o cálculo correto da diferença em dias considerando dias bissextos e meses com seus dias corretos ...
Janeiro ... Fevereiro ... etc ... 31 (28|29) 31 30 31 30 31 31 30 31 30 31 ...
Para saber se um ano é bissexto deve-se dividi-lo por 4 ... se o resto da divisão for zero é um ano bissexto exceto 1900 que fevereiro não teve 29 dias ...
Para um cálculo mais rápido ... porém não muito preciso ... calcula a diferença de ANOS somente por 365,25 (onde este valor multiplicado por 4 acrescentará em 1 dia cada 4 anos que ocorrer dentro da diferença)
Depois disso procure adaptar esse resultado da diferença em dias nos moldes do INSS ...
Depois eu volto ...
Exemplo ...
28/02/1977 a 16/12/1998
(1998 - 1977) x 365,25 = 7670.25 ==> 7670
01/1977 ==> 31
28/1977 ==> 28 + 31 = 59
01/1998 ==> 31
02/1998 ==> 28 (1998 / 4 = 499.5 ==> não é ano bissexto porque tem resto diferente de zero)
03/1998 ==> 31
04/1998 ==> 30
05/1998 ==> 31
06/1998 ==> 30
07/1998 ==> 31
08/1998 ==> 31
09/1998 ==> 30
10/1998 ==> 31
11/1998 ==> 30
12/1998 ==> 16 + 31 + 28 + ... + 30 = 350 - 59 + 7670 = 7961 dias de diferença
7961 dias de diferença
Editado pela última vez por Rhaone em 25 Jun 2018, 23:23, em um total de 2 vezes.
Crie uma conta ou entre para participar dessa discussão
Você precisa ser um membro para postar uma resposta
Crie uma nova conta
Ainda não é um membro? Registre-se agora!
Membro pode iniciar seus próprios tópicos e inscrever-se no dos outros para ser notificado sobre atualizações.
É gratuito e leva apenas 1 minuto
Entrar
-
- Tópicos Semelhantes
- Respostas
- Exibições
- Última mensagem
-
- 2 Respostas
- 619 Exibições
-
Última mensagem por 314159265
-
- 3 Respostas
- 1256 Exibições
-
Última mensagem por Cardoso1979
-
- 2 Respostas
- 1266 Exibições
-
Última mensagem por Leandrovisk
-
- 1 Respostas
- 4253 Exibições
-
Última mensagem por jedi
-
- 1 Respostas
- 1558 Exibições
-
Última mensagem por Carlosft57