FireBirdLib - Topfield TMS PVR TAP Programming Library
DST_CalcTransition.c
Go to the documentation of this file.
1#include "FBLib_time.h"
2
3dword DST_CalcTransition(byte ruleOrdinal, byte ruleDay, byte ruleMonth, byte ruleHour, byte ruleMin, dword StartDate)
4{
6
7 word year;
8 byte month, day, weekDay;
9 dword toppyNow, workingDate;
10
11 if(StartDate == 0)
12 toppyNow = Now(NULL);
13 else
14 toppyNow = StartDate;
15
16 TAP_ExtractMjd(toppyNow >> 16, &year, &month, &day, &weekDay);
17
18 //If the transition month is less than the current month, then the transition must be next year.
19 if(ruleMonth < month) year++;
20
21 workingDate = DST_GetNextTransition(ruleOrdinal, ruleDay, ruleMonth, ruleHour, ruleMin, year);
22
23 //If the result is still in the past, add a year and try again
24 //This would normally happen if you are still in the transition month, but past the transition date/time.
25 if(workingDate < toppyNow)
26 {
27 year++;
28 workingDate = DST_GetNextTransition(ruleOrdinal, ruleDay, ruleMonth, ruleHour, ruleMin, year);
29 }
30
31 TRACEEXIT();
32 return workingDate;
33}
dword DST_CalcTransition(byte ruleOrdinal, byte ruleDay, byte ruleMonth, byte ruleHour, byte ruleMin, dword StartDate)
dword DST_GetNextTransition(byte ruleOrdinal, byte ruleDay, byte ruleMonth, byte ruleHour, byte ruleMin, word ruleYear)
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243
dword Now(byte *Sec)
Definition: Now.c:3