MATEMÁTICA APLICADASoma de diferença entre datas não confere Tópico resolvido

Aplicações e soluções para o dia-a-dia.

Moderador: [ Moderadores TTB ]

Avatar do usuário
Autor do Tópico
alebarros
iniciante
Mensagens: 4
Registrado em: Seg 01 Fev, 2016 08:09
Última visita: 21-02-16
Fev 2016 01 14:56

Soma de diferença entre datas não confere

Mensagem não lida por alebarros »

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.
duvida.jpg
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.

Última edição: alebarros (Seg 01 Fev, 2016 14:56). Total de 1 vez.



Avatar do usuário
csmarcelo
6 - Doutor
Mensagens: 5114
Registrado em: Sex 22 Jun, 2012 22:03
Última visita: 17-04-23
Fev 2016 01 22:26

Re: Soma de diferença entre datas não confere

Mensagem não lida por csmarcelo »

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.
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.
Fonte: Wikipédia.

Última edição: csmarcelo (Seg 01 Fev, 2016 22:26). Total de 1 vez.



Avatar do usuário
Autor do Tópico
alebarros
iniciante
Mensagens: 4
Registrado em: Seg 01 Fev, 2016 08:09
Última visita: 21-02-16
Fev 2016 02 08:32

Re: Soma de diferença entre datas não confere

Mensagem não lida por alebarros »

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.
tempo.png
tempo.png (47.76 KiB) Exibido 6275 vezes
6 anos = 2190 dias
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
Última edição: alebarros (Ter 02 Fev, 2016 08:32). Total de 1 vez.



Avatar do usuário
csmarcelo
6 - Doutor
Mensagens: 5114
Registrado em: Sex 22 Jun, 2012 22:03
Última visita: 17-04-23
Fev 2016 02 10:19

Re: Soma de diferença entre datas não confere

Mensagem não lida por csmarcelo »

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



Avatar do usuário
Autor do Tópico
alebarros
iniciante
Mensagens: 4
Registrado em: Seg 01 Fev, 2016 08:09
Última visita: 21-02-16
Fev 2016 02 16:31

Re: Soma de diferença entre datas não confere

Mensagem não lida por alebarros »

Minha situação é que sempre vou ter duas datas:
16/12/1998
28/02/1977
---------------------
dias
como resolvo essa subtração retornando em dias?
Despois do resultado em dias como faço a conversão para dias,meses e anos?
Última edição: alebarros (Ter 02 Fev, 2016 16:31). Total de 1 vez.



Avatar do usuário
csmarcelo
6 - Doutor
Mensagens: 5114
Registrado em: Sex 22 Jun, 2012 22:03
Última visita: 17-04-23
Fev 2016 03 07:14

Re: Soma de diferença entre datas não confere

Mensagem não lida por csmarcelo »

Creio que você só precisa implementar agora volta (dias para ano/mês/dias), porque, pelo que eu entendi, o restante você já faz.
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.
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.

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
Última edição: csmarcelo (Qua 03 Fev, 2016 07:14). Total de 1 vez.



Avatar do usuário
Autor do Tópico
alebarros
iniciante
Mensagens: 4
Registrado em: Seg 01 Fev, 2016 08:09
Última visita: 21-02-16
Fev 2016 03 08:19

Re: Soma de diferença entre datas não confere

Mensagem não lida por alebarros »

csmarcelo, desculpe minha ignorância mas não entendi como aplicar o algorítimo poderia dar um exemplo.

Parâmetro de entrada: totalDias = 12924
anos = totalDias / 365
anos = 12924/365 = 35,40
totalDias = totalDias - anos*365
totalDias = 12924 - (35,40 * 365)
totalDias = 3
Última edição: alebarros (Qua 03 Fev, 2016 08:19). Total de 1 vez.



Avatar do usuário
csmarcelo
6 - Doutor
Mensagens: 5114
Registrado em: Sex 22 Jun, 2012 22:03
Última visita: 17-04-23
Fev 2016 03 11:27

Re: Soma de diferença entre datas não confere

Mensagem não lida por csmarcelo »

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
Última edição: csmarcelo (Qua 03 Fev, 2016 11:27). Total de 1 vez.



Avatar do usuário
Rhaone
iniciante
Mensagens: 4
Registrado em: Seg 25 Jun, 2018 21:28
Última visita: 26-06-18
Jun 2018 25 23:02

Re: Soma de diferença entre datas não confere

Mensagem não lida por Rhaone »

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

Última edição: Rhaone (Seg 25 Jun, 2018 23:23). Total de 2 vezes.



Responder
  • Tópicos Semelhantes
    Respostas
    Exibições
    Última msg

Voltar para “MATEMÁTICA APLICADA”