Calculo de datas
Pessoal estou com um problema aqui bem achei q seria facil mas porem preciso calcular os dias de férias de funcionarios entre datas e m retornar o dia porem me bati com um porblema se eu so diminuir as das datas e pegar a diferencia eu achei q iria dar a data correto mas porem nao m retor correto por exemplo:
se eu pegar as data dessa forma 01/10/2010 - 30/10/2010 ele m retorna 29 dias porem isso esta errado pq um mes tem 30 dias
esse esta sendo meu problema se eu for tirar férias nesse periodo 01/10/2010 - 30/10/2010 o resultado teria q ser 30 pq eu vou sair no dia 01 até o dia 30...
entao como posso resolver isso to doido ja olhei na net e nao vi nada....
se eu pegar as data dessa forma 01/10/2010 - 30/10/2010 ele m retorna 29 dias porem isso esta errado pq um mes tem 30 dias
esse esta sendo meu problema se eu for tirar férias nesse periodo 01/10/2010 - 30/10/2010 o resultado teria q ser 30 pq eu vou sair no dia 01 até o dia 30...
entao como posso resolver isso to doido ja olhei na net e nao vi nada....
Laelson Fagundes
Curtidas 0
Respostas
Leonardo Xavier
14/10/2010
Porque você na pega o ultimo dia de cada mês e diminui pelos dias que você quer, por exemplo 30/09/2010 - 30/11/2010.
GOSTEI 0
Laelson Fagundes
14/10/2010
Porque é um controle de férias eu tenho que informar a data que o funconario vai sair de férias até a data que ele vai ficar ausente da empresa...
então tenho q informar a data correta se eu sair no dia 01/10/2010 a 30/10/2010 terei q informar essa data...
não dessa forma q vc deu exemplo
então tenho q informar a data correta se eu sair no dia 01/10/2010 a 30/10/2010 terei q informar essa data...
não dessa forma q vc deu exemplo
GOSTEI 0
Eriley Barbosa
14/10/2010
Perai não é pegar a data que inicia as férias e somar o número de dias que ele vai tirar?
GOSTEI 0
Wilson Junior
14/10/2010
é simples, veja:
DataInicio = 01/10/2010
DiasFerias = 30
DataRetorno = DataInicio + DiasFerias - 1 (este menos um é para contar o primeiro dia de férias)
Espero ter colaborado.
DataInicio = 01/10/2010
DiasFerias = 30
DataRetorno = DataInicio + DiasFerias - 1 (este menos um é para contar o primeiro dia de férias)
Espero ter colaborado.
GOSTEI 0
Wilson Junior
14/10/2010
Ah, caso você saiba a datas e quer saber a quantidade de dias, veja:
DataInicio = 01/10/2010
DataRetorno = 30/10/2010
DiasFerias = DataRetorno - DataInicio + 1 (este mais um é para contar o primeiro dia de férias)
Espero ter colaborado.
DataInicio = 01/10/2010
DataRetorno = 30/10/2010
DiasFerias = DataRetorno - DataInicio + 1 (este mais um é para contar o primeiro dia de férias)
Espero ter colaborado.
GOSTEI 0
Laelson Fagundes
14/10/2010
Aqui vai ser da seguinte forma a data de inicio e a data final e vai m dar a quantidade de dias q o funcionario vai ficar fora
bom fiz um quebra galho aqui
dataIn - dataFim+1
dessa forma funcionou mas naos ei c é a correta...
bom fiz um quebra galho aqui
dataIn - dataFim+1
dessa forma funcionou mas naos ei c é a correta...
GOSTEI 0
Laelson Fagundes
14/10/2010
Aqui vai ser da seguinte forma a data de inicio e a data final e vai m dar a quantidade de dias q o funcionario vai ficar fora
bom fiz um quebra galho aqui
dataIn - dataFim+1
dessa forma funcionou mas naos ei c é a correta...
bom fiz um quebra galho aqui
dataIn - dataFim+1
dessa forma funcionou mas naos ei c é a correta...
GOSTEI 0
Wilson Junior
14/10/2010
Isto não é um quebra galho, e sim, um cálculo utilizado para saber a quantidades de dias, pois se utilizar a diferença (soma ou subtração) das datas ele nunca conta o primeiro, ou último, dia em questão.
Este tipo de cálculo tem diversas utilizadades, como cálculo para MRP, Folha de Pagamento, etc., poderia passar horas escrevendo em várias coisas na qual é utilizado.
Espero ter colaborado.
Este tipo de cálculo tem diversas utilizadades, como cálculo para MRP, Folha de Pagamento, etc., poderia passar horas escrevendo em várias coisas na qual é utilizado.
Espero ter colaborado.
GOSTEI 0
David Carvalho
14/10/2010
Amigao, para calcular o tempo de servico vc precisa fazer o seguinte
pegar o periodo inicial e subtrair com o final em uma data decodificada
dia mes ano Final
01 04 2012
dia mes ano Inicial
10 05 2011
----------------
09 01 1 resultado
ou seja tenho 1 1 mes e 9 dias
ai vem a magica
ano * 12
+ mes
---------
13
se dias >= 15 entao
13 + 1 = 14 meses
dai se for calculo de rescisao, na formula da vencida, paga 12 e a sobra é proporcional :D
segue minha formula
DecodeDate(pvUltFerias,AnoIni,MesIni,DiaIni); -- aqui data de admissao ou ultimas ferias
DecodeDate(pvFim,AnoFim,MesFim,DiaFim); -- aqui fim do periodo ou data da demissao
MesesAno := ( AnoFim - AnoIni ) * 12 ;
Meses := ( MesFim - MesIni ) ;
if Meses < 0 Then
Meses := Meses * -1 ;
Meses := Meses + MesesAno ;
DiaIni := DiaIni - 1 ;
Dias := DiaFim - DiaIni;
if Dias < 0 Then
Dias := Dias * -1 ;
if ( Dias >= 15 ) Then
Meses := Meses + 1 ;
Result := Meses ;
pegar o periodo inicial e subtrair com o final em uma data decodificada
dia mes ano Final
01 04 2012
dia mes ano Inicial
10 05 2011
----------------
09 01 1 resultado
ou seja tenho 1 1 mes e 9 dias
ai vem a magica
ano * 12
+ mes
---------
13
se dias >= 15 entao
13 + 1 = 14 meses
dai se for calculo de rescisao, na formula da vencida, paga 12 e a sobra é proporcional :D
segue minha formula
DecodeDate(pvUltFerias,AnoIni,MesIni,DiaIni); -- aqui data de admissao ou ultimas ferias
DecodeDate(pvFim,AnoFim,MesFim,DiaFim); -- aqui fim do periodo ou data da demissao
MesesAno := ( AnoFim - AnoIni ) * 12 ;
Meses := ( MesFim - MesIni ) ;
if Meses < 0 Then
Meses := Meses * -1 ;
Meses := Meses + MesesAno ;
DiaIni := DiaIni - 1 ;
Dias := DiaFim - DiaIni;
if Dias < 0 Then
Dias := Dias * -1 ;
if ( Dias >= 15 ) Then
Meses := Meses + 1 ;
Result := Meses ;
GOSTEI 0