Fórum If com dia da semana e hora #212456

08/02/2004

0

Não conheço muito bem a sintax de If, se ela é parecida com a SE do Excel então tem If E, If Ou, etc. talvez não seja nem a função If que vai me resolver esse problema. Na verdade quero que ele me retorne True ou False dependendo do dia da semana e hora. Por exmplo:

De segunda a quinta de 07:00 hs às 13:00 = True
De quarta à sexta de 17: hs às 22:00 = True
Aos sábados de 00:01 hs às 23:59 = True
Nos outros horário = False

Com faço?


Fariasps

Fariasps

Responder

Posts

08/02/2004

Drakkar

Só uma pergunta.. da onde vai vim o dia ta semana e hora? do sistema? de um edit?


Responder

Gostei + 0

08/02/2004

Fariasps

do sistema
a data e a hora ele vai pegar o sistema
uso o Win XP


Responder

Gostei + 0

08/02/2004

Drakkar

Aqui está:

Var
  Resultado: Boolean;
begin
If ((DayOfWeek(Date()) = 2) and (DayOfWeek(Date()) = 5)) and ((TimeToStr(Time()) >= ´07:00:00.000´)
and (TimeToStr(Time()) <= ´13:00:00.000´)) Then //De segunda a quinta de 07:00 hs às 13:00
Begin
  Resultado:=True
End
Else
Begin
  If ((DayOfWeek(Date()) = 3) and (DayOfWeek(Date()) = 6) and ((TimeToStr(Time()) >= ´17:00:00.000´)
  and (TimeToStr(Time()) <= ´22:00:00.000´))) Then //De quarta à sexta de 17: hs às 22:00
  Begin
    Resultado:=True
  End
  Else
  Begin
    If (DayOfWeek(Date()) = 7) and ((TimeToStr(Time()) >= ´00:01:00.000´)
    and (TimeToStr(Time()) <= ´23:59:00.000´)) Then //Aos sábados de 00:01 hs às 23:59
    Begin
      Resultado:=True
    End
    Else
    Begin
      Resultado:=False;
    End;
  End;
End;



Responder

Gostei + 0

08/02/2004

Fabio.hc

Outra forma é usando o case com if:

function TForm1.Horario:boolean;
var Dia:integer;
    hora:integer;
begin
   Dia:=DayOfTheWeek(date);
   hora:=HourOf(time);
   Result:=false;
   case dia of
   1..2: begin
         if (hora >= 7) and (hora < 13) then
            Result:=true;
         end;
   3..4: begin
         if ((hora >= 7) and (hora < 13)) or ((hora >= 17) and (hora < 22)) then
            Result:=true;
         end;
   5:    begin
         if (hora >= 17) and (hora < 22) then
            Result:=true;
         end;
   6: Result:=true;
   end;
end;



Responder

Gostei + 0

08/02/2004

Drakkar

Com certeza com case fica mais bonitinho, mas preferi nao usar porque achei que o cara nao entendia de programaçãoe em pascal daí podia complicar mais ainda pro lado dele. hehe


Responder

Gostei + 0

08/02/2004

Fabio.hc

Só uma observação: a diferença de DayOfWeek e DayOfTheWeek.

[b:f6313fde5a]DayOfWeek[/b:f6313fde5a]
  days[1] := ´Sunday´;
  days[2] := ´Monday´;
  days[3] := ´Tuesday´;
  days[4] := ´Wednesday´;
  days[5] := ´Thursday´;
  days[6] := ´Friday´;
  days[7] := ´Saturday´;


[b:f6313fde5a]DayOfTheWeek[/b:f6313fde5a]
  DayMonday = 1;
  DayTuesday = 2;
  DayWednesday = 3;
  DayThursday = 4;
  DayFriday = 5;
  DaySaturday = 6;
  DaySunday = 7;



Responder

Gostei + 0

09/02/2004

Drakkar

Só uma observação: a diferença de DayOfWeek e DayOfTheWeek. [b:e063654f0f]DayOfWeek[/b:e063654f0f]
  days[1] := code]
´Sunday´;
  days[2] := ´Monday´;
  days[3] := ´Tuesday´;
  days[4] := ´Wednesday´;
  days[5] := ´Thursday´;
  days[6] := ´Friday´;
  days[7] := ´Saturday´;[/
[b:e063654f0f]DayOfTheWeek[/b:e063654f0f]
[code]  DayMonday = 1;
  DayTuesday = 2;
  DayWednesday = 3;
  DayThursday = 4;
  DayFriday = 5;
  DaySaturday = 6;
  DaySunday = 7;



É ao contrario..

function DayOfTheWeek(const AValue: TDateTime): Word;

Essa função retorna uma Word, no caso: ´Sunday´, ´Monday´,´Tuesday´, ´Wednesday´,´Thursday´,´Friday´,´Saturday´.

function DayOfWeek(Date: TDateTime): Integer;

Já essa retorna um Integer, de 1 a 7.


Responder

Gostei + 0

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

Aceitar