Como incrementar datas ?

Delphi

16/05/2003

Como faço para descobrir e gerar as datas de todas as terças e quintas dentro de um período ? Preciso disso para gerar uma tabela de aulas.

Por exemplo:

data_inicial= 06/05/2003

data_final=30/05/2003

terças: 06/05/2003, 13/05/2003, 20/05/2003 e 27/05/2003.

sextas: 09/05/2003, 16/05/2003, 23/05/2003 e 30/05/2003


Rodrigo Costa

Rodrigo Costa

Curtidas 0

Respostas

Carnette

Carnette

16/05/2003

[quote:9574beb1a1=´Rodrigo Costa´]Como faço para descobrir e gerar as datas de todas as terças e quintas dentro de um período ? Preciso disso para gerar uma tabela de aulas.

Por exemplo:

data_inicial= 06/05/2003

data_final=30/05/2003

terças: 06/05/2003, 13/05/2003, 20/05/2003 e 27/05/2003.

sextas: 09/05/2003, 16/05/2003, 23/05/2003 e 30/05/2003[/quote:9574beb1a1]

Pega esta UNIT e coloca em teus projetos....nela tem todas as funçoes de conversões e calculos com data e hora...


http://www.carnette.kit.net/D5/esbdates.zip


GOSTEI 0
Rodrigo Costa

Rodrigo Costa

16/05/2003

Valeu Carnette, obrigado !

Eu baixei e vi que quem um ´trilhão´ de funções que irão de ajudar em outros projetos. Mas não consegui achar nenhuma que se adapte a essa minha necessidade específica.


GOSTEI 0
Jeancamila

Jeancamila

16/05/2003

crie em um form os seguintes comonentes:

memo1
maskedit1
maskedit2
button1

e codifique o codigo abaixo:

obs.: codigo para achar as terça.


procedure TForm1.Button1Click(Sender: TObject);
var i, j : integer;
datini, datafim, datatual : tdate;
begin
memo1.Lines.Clear;
memo1.Lines.Add(´As datas que são terças feiras entre os dias ´+ maskedit1.Text + ´ e ´ + maskedit2.Text + ´são: ´ );
i:= DayOfWeek(strtodate(maskedit1.text));
datafim := strtodate(maskedit2.text);
case i of

1 : j :=2;
2 : j :=1;
3 : j := 0;
4 : j :=6;
5 : j :=5;
6 : j :=4;
7 : j :=3;
end;
datatual := strtodate(maskedit1.text) + j;
while datatual < datafim do
begin
memo1.Lines.Add(datetostr(datatual));
datatual := datatual + 7;
end;
maskedit1.Clear;
maskedit2.Clear;
end;

espero que ajude.

Me avise se vc entender ou nao!

Grato

Jean


GOSTEI 0
Rodrigo Costa

Rodrigo Costa

16/05/2003

Valeu Jean, Obrigado !


GOSTEI 0
Hamilton Dias

Hamilton Dias

16/05/2003

Este código, verifica de uma tabela de dias da semana onde existem 07 campos logicos, onde o usuário ira marcar e também verifica se existe um feriado na data da marcação. Eu penei para criar esta rotina e funciona se quizer otimizar código pode ficar avontade, pois quando criei estava com muito serviço e foi a primeira e única ideia que me apareceu.

procedure Tf_Tur.btnDiaClick(Sender: TObject);
var Dias, Aulas:Real;
Carga,I, X,X1:Integer;
data:TdateTime;
Dia:String;
begin
Feriado:=´´+#13;
Aulas:=dmCurso.tbTur_HorQuant.value;
Carga:=dmCurso.tbTur_CurCarga.value;
Dias:=Carga/Aulas;
Data:=dmCurso.tbTur.FieldByName(´Inicio´).asDateTime;
Dia:=formatFloat(´0,00´,Dias);
X1:=StrToInt(Dia);

X:=0;
repeat
with dmCurso.tbTur_Dia do
begin
begin
if DayOfWeek(Data) = 1 then
begin
if fieldByName(´Domingo´).asBoolean = true then
begin
if dmCurso.tbTur_Cal.Locate(´Data´,Data,[]) then
begin
if dmCurso.tbTur_Cal.FieldByName(´Data´).asdateTime = Data then
begin
feriado:=feriado+dmCurso.tbTur_Cal.FieldByName(´Descricao´).asString+#13;
Data:=Data+1;
end
end
else
begin
x:=x+1;
dmCurso.tbTur_Pre.Append;
dmCurso.tbTur_Pre.fieldByName(´data´).asDateTime:=Data;
dmCurso.tbTur_Pre.fieldByName(´Aula´).asString:=FormatFloat(´#00´,X)+´/´+intToStr(dmCurso.tbTurDia.value);
dmCurso.tbTur_Pre.Post;
Data:=Data+1;
end;
end
else
Data:=Data+1;

end
else
if DayOfWeek(Data) = 2 then
begin
if fieldByName(´Segunda´).asBoolean = true then
begin
if dmCurso.tbTur_Cal.Locate(´Data´,Data,[]) then
begin
if dmCurso.tbTur_Cal.FieldByName(´Data´).asdateTime = Data then
begin
feriado:=feriado+dmCurso.tbTur_Cal.FieldByName(´Descricao´).asString+#13;
Data:=Data+1;
end
end
else
begin
x:=x+1;
dmCurso.tbTur_Pre.Append;
dmCurso.tbTur_Pre.fieldByName(´data´).asDateTime:=Data;
dmCurso.tbTur_Pre.fieldByName(´Aula´).asString:=FormatFloat(´00´,X)+´/´+intToStr(dmCurso.tbTurDia.value);
dmCurso.tbTur_Pre.Post;
Data:=Data+1;
end;
end
else
Data:=Data+1;
end
else
if DayOfWeek(Data) = 3 then
begin //Inicio do Case
if fieldByName(´Terca´).asBoolean = true then
begin
if dmCurso.tbTur_Cal.Locate(´Data´,Data,[]) then
begin
if dmCurso.tbTur_Cal.FieldByName(´Data´).asdateTime = Data then
begin
feriado:=feriado+dmCurso.tbTur_Cal.FieldByName(´Descricao´).asString+#13;
Data:=Data+1;
end
end
else
begin
x:=x+1;
dmCurso.tbTur_Pre.Append;
dmCurso.tbTur_Pre.fieldByName(´data´).asDateTime:=Data;
dmCurso.tbTur_Pre.fieldByName(´Aula´).asString:=FormatFloat(´#00´,X)+´/´+intToStr(dmCurso.tbTurDia.value);
dmCurso.tbTur_Pre.Post;
Data:=Data+1;
end;
end
else
Data:=Data+1;

end // Final do End do case
else

if DayOfWeek(Data) = 4 then
begin
if fieldByName(´Quarta´).asBoolean = true then
begin
if dmCurso.tbTur_Cal.Locate(´Data´,Data,[]) then
begin
if dmCurso.tbTur_Cal.FieldByName(´Data´).asdateTime = Data then
begin
feriado:=feriado+dmCurso.tbTur_Cal.FieldByName(´Descricao´).asString+#13;
Data:=Data+1;
end
end
else
begin
x:=x+1;
dmCurso.tbTur_Pre.Append;
dmCurso.tbTur_Pre.fieldByName(´data´).asDateTime:=Data;
dmCurso.tbTur_Pre.fieldByName(´Aula´).asString:=FormatFloat(´#00´,X)+´/´+intToStr(dmCurso.tbTurDia.value);
dmCurso.tbTur_Pre.Post;
Data:=Data+1;
end;
end
else
Data:=Data+1;
end
else

if DayOfWeek(Data) = 5 then
begin
if fieldByName(´Quinta´).asBoolean = true then
begin
if dmCurso.tbTur_Cal.Locate(´Data´,Data,[]) then
begin
if dmCurso.tbTur_Cal.FieldByName(´Data´).asdateTime = Data then
begin
feriado:=feriado+dmCurso.tbTur_Cal.FieldByName(´Descricao´).asString+#13;
Data:=Data+1;
end
end
else

begin
x:=x+1;
dmCurso.tbTur_Pre.Append;
dmCurso.tbTur_Pre.fieldByName(´data´).asDateTime:=Data;
dmCurso.tbTur_Pre.fieldByName(´Aula´).asString:=FormatFloat(´00´,X)+´/´+intToStr(dmCurso.tbTurDia.value);
dmCurso.tbTur_Pre.Post;
Data:=Data+1;
end;
end
else
Data:=Data+1;
end
else
if DayOfWeek(Data) = 6 then
begin
if fieldByName(´Sexta´).asBoolean = true then
begin
if dmCurso.tbTur_Cal.Locate(´Data´,Data,[]) then
begin
if dmCurso.tbTur_Cal.FieldByName(´Data´).asdateTime = Data then
begin
feriado:=feriado+dmCurso.tbTur_Cal.FieldByName(´Descricao´).asString+#13;
Data:=Data+1;
end
end
else

begin
x:=x+1;
dmCurso.tbTur_Pre.Append;
dmCurso.tbTur_Pre.fieldByName(´data´).asDateTime:=Data;
dmCurso.tbTur_Pre.fieldByName(´Aula´).asString:=FormatFloat(´#00´,X)+´/´+intToStr(dmCurso.tbTurDia.value);
dmCurso.tbTur_Pre.Post;
Data:=Data+1;
end;
end
else
Data:=Data+1;
end
else
if DayOfWeek(Data) = 7 then
begin
if fieldByName(´Sabado´).asBoolean = true then
begin
if dmCurso.tbTur_Cal.Locate(´Data´,Data,[]) then
begin
if dmCurso.tbTur_Cal.FieldByName(´Data´).asdateTime = Data then
begin
feriado:=feriado+dmCurso.tbTur_Cal.FieldByName(´Descricao´).asString+#13;
Data:=Data+1;
end
end
else

begin
x:=x+1;
dmCurso.tbTur_Pre.Append;
dmCurso.tbTur_Pre.fieldByName(´data´).asDateTime:=Data;
dmCurso.tbTur_Pre.fieldByName(´Aula´).asString:=FormatFloat(´#00´,X)+´/´+intToStr(dmCurso.tbTurDia.value);
dmCurso.tbTur_Pre.Post;
Data:=Data+1;
end;
end
else
Data:=Data+1;
end;
end;
end;
// Data:=Data+1;

until x = x1;
dmCurso.tbTur.edit;
dmCurso.tbTur.FieldbyName(´Fim´).asDateTime:=Data-1;
dmCurso.tbTur.Post;
dmCurso.tbTur_Pre.First;
end;


GOSTEI 0
POSTAR