Data i czas



Gdy piszemy aplikację często chcemy by wyświetlała aktualną datę i godzinę. Istnieje kilka sposobów.

Najprostszy sposób (13:48:04, 02-12-22):
Label1.Caption := TimeToStr(Time) + #13 + DateToStr(Date);
Czasochłonny sposób (14:3:23, 31-3-2002):
var
 rok, miesiac, dzien, godziny, minuty, sekundy, msekundy : word;
begin
  DecodeDate(Now, rok, miesiac, dzien);
  DecodeTime(Now, godziny, minuty, sekundy, msekundy);
  Label1.Caption := IntToStr(godziny) + ':' + IntToStr(minuty) + ':' + IntToStr(sekundy)
  + #13 + IntToStr(dzien) + '-' + IntToStr(miesiac) + '-' + IntToStr(rok);
end;
Sposób dający najwięcej możliwości:
begin
  Label1.Caption := x;
  
  Dla x:
  FormatDateTime('dd mmmm yyyy', Now) // 31 marzec 2002
  FormatDateTime('dd mm yy', Now) // 31 03 02
  FormatDateTime('dd mm yyyy', Now) // 31 03 2002
  FormatDateTime('ddd dd mmmm yyyy', Now) // N 31 marzec 2002
  FormatDateTime('dddd dd mmmm yyyy', Now) // niedziela 31 marzec 2002
  FormatDateTime('dddd dd mm yyyy', Now) // niedziela 31 03 2002
  FormatDateTime('dddd', Now) // niedziela
  FormatDateTime('mmmm', Now) // marzec
  FormatDateTime('hh mm ss', Now); // 14 26 20
end;
Dzień tygodnia można uzyskać także w inny sposób:
var
  Data: TDateTime;
  dni: array[1..7] of string;
begin
  dni[1] := 'Niedziela';
  dni[2] := 'Poniedziałek';
  dni[3] := 'Wtorek';
  dni[4] := 'Środa';
  dni[5] := 'Czwartek';
  dni[6] := 'Piątek';
  dni[7] := 'Sobota';
  Data := Date;
  Label1.Caption := dni[DayOfWeek(Data)];
end;
Sprawdzenie, czy rok jest przestępny. Rok jest przestępny gdy dzieli się przez 4 i (nie jest podzielny przez 100 lub jest podzielny przez 400) :)
function Przestepny(Rok: Integer): Boolean;
begin
  Result := (Rok mod 4 = 0) and ((Rok mod 100 <> 0) or (Rok mod 400 = 0));
end;
wykorzystanie:
if Przestepny(rok) then 
   Label1.Caption := 'Tak' 
else 
   Label1.Caption := 'Nie'; // (rok) - np. 2000
end;
A na koniec sprawdzimy ile dni i godzin minęło pomiędzy dwiema datami:
var
D1,D2:TDateTime;
begin
  D1 := StrToDate('02-04-30'); // rok, miesiąc, dzień
  D2 := StrToDate('02-04-1');
  ShowMessage('Dni= '+FloatToStr(D1-D2)+' Godziny= '+FloatToStr((D1-D2)*24));
end;
To wszystko co miałem Wam do powiedzenia :)



...powrót