2006. március 2., csütörtök
How to calculate the week from a given date
Problem/Question/Abstract:
How to calculate the week from a given date
Answer:
The code below tells you which week the specified date is in, and also the corresponding day of the week. The date format it handles is "06/25/1996". You have to create a form named "Forma" with a TEdit named "Edit1", four labels and a button named "GetWeekBtn".
unit Forma;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
type
TForma1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
GetWeekBtn: TButton;
Label4: TLabel;
procedure GetWeekBtnClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
function HowManyDays(pYear, pMonth, pDay: word): Integer;
public
{ Public declarations }
end;
var
Forma1: TForma1;
implementation
{$R *.DFM}
uses
Inifiles;
procedure TForma1.FormCreate(Sender: TObject);
var
WinIni: TInifile;
begin
WinIni := TIniFile.Create('WIN.INI');
WinIni.WriteString('intl', 'sShortDate', 'MM/dd/yyyy');
WinIni.Free;
end;
function TForma1.HowManyDays(pYear, pMonth, pDay: Word): Integer;
var
Sum: Integer;
pYearAux: Word;
begin
Sum := 0;
if pMonth > 1 then
Sum := Sum + 31;
if pMonth > 2 then
Sum := Sum + 28;
if pMonth > 3 then
Sum := Sum + 31;
if pMonth > 4 then
Sum := Sum + 30;
if pMonth > 5 then
Sum := Sum + 31;
if pMonth > 6 then
Sum := Sum + 30;
if pMonth > 7 then
Sum := Sum + 31;
if pMonth > 8 then
Sum := Sum + 31;
if pMonth > 9 then
Sum := Sum + 30;
if pMonth > 10 then
Sum := Sum + 31;
if pMonth > 11 then
Sum := Sum + 30;
Sum := Sum + pDay;
if ((pYear - (pYear div 4) * 4) = 30) and (pMonth > 2) then
inc(Sum);
HowManyDays := Sum;
end;
procedure TForma1.GetWeekBtnClick(Sender: TObject);
var
ADate: TDateTime;
EditAux: string;
Week, year, month, day: Word;
begin
EditAux := Edit1.Text;
ADate := StrToDate(EditAux);
Label1.Caption := DateToStr(ADate);
DecodeDate(Adate, Year, Month, Day);
case DayOfWeek(ADate) of
1: Label4.Caption := 'Sunday';
2: Label4.Caption := 'Monday';
3: Label4.Caption := 'Tuesday';
4: Label4.Caption := 'Wednesday';
5: Label4.Caption := 'Thursday';
6: Label4.Caption := 'Friday';
7: Label4.Caption := 'Saturday';
end;
Week := (HowManyDays(year, month, day) div 7) + 1;
Label3.Caption := 'Week No. ' + IntToStr(Week);
end;
end.
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése