Fórum Somar Dias a uma Data ! #215167
18/02/2004
0
- No BD defini-se um campo para Data de Vencimento de um Boleto. Mas só será cobrado juros a partir de 3 dias apos o vencimento. Preciso entao somar à data de vencimento 3 dias. Do jeito ´lusitano´ teria q verificar se é dia 30,31, fevereiro, bisexto, etc????
Por favor, me ajudem ! Obrigada! :D
Vivipeder
Curtir tópico
+ 0Posts
18/02/2004
Paulo_amorim
O Delphi tem a função IncDay, IncMonth, escolha o melhor.
IncEveryThing (brincadeira esse não :twisted: )
Gostei + 0
18/02/2004
Rômulo Barros
{**************************************************************************
Desenvolvi esta Unit - Mas somente serve pra alguns casos:
************************************************************************** }
unit Funcoes; interface Uses SysUtils, ShellApi,Forms,Windows, ComCtrls, Dialogs; Var Horas,Minutos,Segundos,Milessegundos : Word; s : string[255]; c : array[0..255] of Byte absolute s; // Procedimentos Procedure IncrementarHora(Var parHora : TDateTime; parValor : Word = 0); Procedure IncrementarMinuto(Var parHora : TDateTime; parValor : Word = 0); Procedure IncrementarSegundos(Var parHora : TDateTime; parValor : Word = 0); Procedure DecrementarHora(Var parHora : TDateTime; parValor : Word = 0); Procedure DecrementarMinuto(Var parHora : TDateTime; parValor : Word = 0); Procedure DecrementarSegundo(Var parHora : TDateTime; parValor : Word = 0); Procedure IncrementarAno(Var parData : TDateTime; parValor : Word = 0); Procedure IncrementarMes(Var parData : TDateTime; parValor : Word = 0); Procedure IncrementarDia(Var parData : TDateTime; parValor : Word = 0); // Funções implementation uses Math, DateUtils; Procedure IncrementarHora(Var parHora : TDateTime; parValor : Word = 0); Begin DecodeTime(parHora,Horas,Minutos,Segundos,Milessegundos); Horas := Horas + parValor; While(Horas >= 24)Do Begin Horas := Horas - 24; End; parHora := EncodeTime(Horas,Minutos,Segundos,Milessegundos); End; Procedure IncrementarMinuto(Var parHora : TDateTime; parValor : Word = 0); Begin DecodeTime(parHora,Horas,Minutos,Segundos,Milessegundos); Minutos := Minutos + parValor; While(Minutos >= 60)Do Begin Minutos := Minutos - 60; Horas := Horas + 1; If(Horas = 24)then Horas := 0; End; parHora := EncodeTime(Horas,Minutos,Segundos,Milessegundos); End; Procedure IncrementarSegundos(Var parHora : TDateTime; parValor : Word = 0); Begin DecodeTime(parHora,Horas,Minutos,Segundos,Milessegundos); Segundos := Segundos + parValor; While(Segundos >= 60)Do Begin Segundos := Segundos - 60; Minutos := Minutos + 1; If(Minutos = 60)Then Begin Minutos := 0; Horas := Horas + 1; If(Horas = 24)Then Horas := 0; End; End; parHora := EncodeTime(Horas,Minutos,Segundos,Milessegundos); End; Procedure DecrementarHora(Var parHora : TDateTime; parValor : Word = 0); Begin DecodeTime(parHora,Horas,Minutos,Segundos,Milessegundos); If(Horas >= parValor)Then Horas := Horas - parValor Else Begin While(Horas < parValor)Do Horas := Horas + 24; Horas := Horas - parValor; End; If(Horas = 24)Then Horas := 0; parHora := EncodeTime(Horas,Minutos,Segundos,Milessegundos); End; Procedure DecrementarMinuto(Var parHora : TDateTime; parValor : Word = 0); Begin DecodeTime(parHora,Horas,Minutos,Segundos,Milessegundos); If(Minutos >= parValor)Then Minutos := Minutos - parValor Else Begin While(Minutos < parValor)Do Begin Minutos := Minutos + 60; If(Horas = 0)Then Horas := 24; Horas := Horas -1; End; Minutos := Minutos - parValor; End; parHora := EncodeTime(Horas,Minutos,Segundos,Milessegundos); End; Procedure DecrementarSegundo(Var parHora : TDateTime; parValor : Word = 0); Begin DecodeTime(parHora,Horas,Minutos,Segundos,Milessegundos); If(Segundos >= parValor)Then Segundos := Segundos - parValor Else Begin While(Segundos < parValor)Do Begin Segundos := Segundos + 60; If(Minutos = 0)Then Begin Minutos := 60; If(Horas = 0)Then Horas := 24; Horas := Horas - 1; End; Minutos := Minutos - 1; End; Segundos := Segundos - parValor; End; parHora := EncodeTime(Horas,Minutos,Segundos,Milessegundos); End; Procedure IncrementarAno(Var parData : TDateTime; parValor : Word = 0); Begin IncYear(parData,parValor); End; Procedure IncrementarMes(Var parData : TDateTime; parValor : Word = 0); Begin IncMonth(parData,parValor); End; Procedure IncrementarDia(Var parData : TDateTime; parValor : Word = 0); Begin IncDay(parData,parValor); End; end.
Gostei + 0
18/02/2004
Edumarc
edit1.text := formatdatetime(´dd/mm/yyyy´,date+strtoint(edit2.text)));
caso a data seja 28/02/2004 e o valor de edit2.text for 3 o resultado será 02/03/2004, o sistema se encarrega de não colocar 31/02/2004 como por exemplo se voce somar 30/04/2004 + 1 o resultado será 01/01/2005 e não 31/04/2004 que não existe.
Gostei + 0
18/02/2004
Vivipeder
Há outra ???
Gostei + 0
18/02/2004
Vivipeder
Gostei + 0
18/02/2004
Rômulo Barros
Uses DateUtils ;
Gostei + 0
18/02/2004
Vivipeder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)