Como incrementar datas ?

16/05/2003

0

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

Responder

Posts

16/05/2003

Carnette

[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


Responder

16/05/2003

Rodrigo Costa

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.


Responder

18/05/2003

Jeancamila

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


Responder

19/05/2003

Rodrigo Costa

Valeu Jean, Obrigado !


Responder

19/05/2003

Hamilton Dias

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;


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar