Fórum Datas no Delphi #312544
10/02/2006
0
Alguem me sabe diz como obter atraves nº da semana e o ano, qual a data respectiva(intrevalo). Se existe algum comando que devolva esses valores.
Tipo nº semana 2 do ano 2005: corresponde 3-1-2005 a 9-1-2005.
Tou trab com Delphi 5.
Agradecia a ajuda
Nilpedro
Curtir tópico
+ 0Posts
10/02/2006
Marco Salles
e a primeira semana do ano 2005 ??? corresponde a que ????
Gostei + 0
10/02/2006
Marco Salles
e a sexta semana do ano 2005 ??? corresponde a que ????
Gostei + 0
10/02/2006
Marco Salles
procedure calcularDatas(n,ano:Word); var Datainicial,DataFinal:TDate; resto,fator,diferencaDias:word; begin try dataInicial:=encodedate(ano,1,1); resto:=trunc(datainicial) mod 7; fator:=2; case resto of 0:begin diferencaDias:=1; end; 1:begin fator:=1; diferencaDias:=0; end; 2:begin diferencaDias:=6; end; 3:begin diferencaDias:=5; end; 4:begin diferencaDias:=4; end; 5:begin diferencaDias:=3; end; 6:begin diferencaDias:=2; end; end; if n > 1 then begin dataInicial:=DataInicial+((n-fator)*7+diferencaDias); datafinal:=dataInicial+6; end else if resto=1 then dataFinal:=Datainicial+6 else datafinal:=(dataInicial+diferencaDias-1); showmessage(´A Data Inicial é : ´+datetostr(dataInicial)+´ .´+#13+ ´A Data Final é : ´+datetostr(dataFinal)); except on econverterror do showmessage(´Erro na conversão de datas . Verifique Ano e Semanas´) end; end;
procedure TForm1.Button1Click(Sender: TObject); begin calcularDatas(strtoint(edit1.text),strtoint(edit2.text)); end;
Gostei + 0
10/02/2006
Nilpedro
Mas ja tinha encontrado uma solução, aqui fica a minha técnica:
[u:aa44c38533]usei SpinEdit e adicionei cDateTime no USES[/u:aa44c38533]
dta:=firstdayofyear(StrToDate(formatdatetime(´mm/dd/´+bsSkinSpinEdit2.Text,date)))
if isweekend(dta) then dta:=nextworkday(dta);
while not ismonday(dta) do
dta:=dta-1;
inicio.Caption := DateToStr(dta+(bsSkinSpinEdit1.Value -1)*7);
dta:=dta+(bsSkinSpinEdit1.Value -1)*7;
while not issunday(dta) do
dta:=dta+1;
fim.Caption := DateToStr(dta);
Gostei + 0
11/02/2006
Marco Salles
mas voce disse que usa delphi 5.0 mas acho que esta unit cDateTime não faz parte do delphi 5.0 .. engraçado.. O SpinEdit tb não consegui localizar
em termos de codigo que lhe passei pode ser minimizado a veras
agora quanto a funcionar ou não , vai depender de como voce definiu o que voce quer como intervalo de data ???
são definiçoes que ficaram soltas no ar ...o que faz com que o algoritimo atenda ou não
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)