////////////////////////////////////////////////////////////////
// Function: MMDDYYToDDDDDh
// Description: Date converter.
// Returns: char * -- DDDDD.
////////////////////////////////////////////////////////////////
char *
MMDDYYToDDDDDh(int CCDigits, char *MMDDCCYYStartDate,
char *MMDDYYDate, char *DDDDD)
{
char MMDDCCYYStartBuffer[9], MMDDCCYYBuffer[9],
MMDDYYBuffer[7];
static char DDDDDBuffer[6];
unsigned long DayCount;
strcpy(MMDDCCYYStartBuffer, MMDDCCYYStartDate);
strcpy(MMDDYYBuffer, MMDDYYDate);
MMDDYYToMMDDCCYY(CCDigits, MMDDYYBuffer, MMDDCCYYBuffer);
DayCount = FindJulianDay(MMDDCCYYBuffer) -
FindJulianDay(MMDDCCYYStartBuffer);
(void)printf("DayCount=%lu;\n", DayCount);
ltoa(DayCount, DDDDDBuffer, 16); // convert to hex
strcpy(DDDDD, DDDDDBuffer);
return DDDDDBuffer;
}
////////////////////////////////////////////////////////////////
// Function: FindJulianDay
//
// Description: Calculates JD for Gregorian calendar.
// Count starts from January 1st, 4713 BC. Days count from a
// median Greenwich noon following a median Greenwich midnight
// defining the beginning of the considered date.
//
// Returns: long -- JD value.
////////////////////////////////////////////////////////////////
long FindJulianDay(char *MMDDCCYYDate)
{
unsigned long Year, CCDigits, YYDigits;
char MMDDCCYYBuffer[9];
unsigned long JD;
static float JulianDay;
float YearConst;
strcpy (MMDDCCYYBuffer, MMDDCCYYDate);
CCDigits=Get(MMDDCCYYBuffer, (int)CC);
YYDigits=Get(MMDDCCYYBuffer, (int)YY);
Year=CCDigits*100+YYDigits;
JD=(4712+Year)*365+1178+Year/4+
Year/400-CCDigits; // 1178=4712/4
switch (Year % 4) {
case 0:
YearConst = 1.0F;
break;
case 1:
YearConst = 1.75F;
break;
case 2:
YearConst = 1.50F;
break;
case 3:
YearConst = 1.25F;
break;
}
JulianDay=(float)JD+YearConst;
JulianDay+=(float)FindDateOrderedNumber(MMDDCCYYBuffer);
JD=(long)JulianDay;
return (JD);
}
/* End of File */