The following code is not fully tested, but hopefully it will give you a
starting point. Pass in the required year and StandardDate/DaylightDate from
TIME_ZONE_INFORMATION - it will hopefully return the correct absolute date.
function GetAbsoluteDate(ReqdYear: Word; SysTime: TSystemTime): TDate;
var
AbsoluteDay, MaxDays, WeekDayofFirst: Integer;
const
MaxDaysInMonth: array [1..12] of Word =
(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
begin
with SysTime do
begin
WeekdayOfFirst := DayOfWeek(EncodeDate(ReqdYear, wMonth, 1)) - 1;
AbsoluteDay := WeekdayOfFirst - wDayOfWeek;
if AbsoluteDay < 0 then
Inc(AbsoluteDay, 7);
if wDay = 5 then
begin
if IsLeapYear(ReqdYear) and (wMonth = 2) then
MaxDays := 29
else
MaxDays := MaxDaysInMonth[wMonth];
while AbsoluteDay + 7 < MaxDays do
Inc(AbsoluteDay, 7);
end
else
Inc(AbsoluteDay, (wDay - 1) * 7);
Result := EncodeDate(ReqdYear, wMonth, AbsoluteDay);
end;
end;
HTH,
Tom
> Thanks for the reply Tom,
>
> For now I only need to get the time zone info for the location of the
> computer. But, as mentioned, it is always returning the
> informatino in the
> TIME_ZONE_INFORMATION structure in day-in-month format
> whereas I need it in
> absolute format. Do you know how to get it to return in
> absolute format?
>
> cheers,
>
> Phil.
---------------------------------------------------------------------------
New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED]
with body of "unsubscribe delphi"