Index: RTC.c =================================================================== diff -u -r1beb69d9da7309365751da6feaa88f594e704e46 -r88ddc0c6d06cb0d6ceef0a32f9ef08b4e0b28b0e --- RTC.c (.../RTC.c) (revision 1beb69d9da7309365751da6feaa88f594e704e46) +++ RTC.c (.../RTC.c) (revision 88ddc0c6d06cb0d6ceef0a32f9ef08b4e0b28b0e) @@ -115,6 +115,8 @@ #define YEAR_2000 2000U ///< Year 2000 #define EPOCH_YEAR 1900U ///< Reference year to calculate epoch (1900) #define YEAR_1900_TO_1970_SECONDS_DIFF 2208988800U ///< Difference in seconds from 1/1/1900 to 1/1/1970 (2208988800) +/// Six hour offset that is apparently needed before converting epoch to date/time structure using gmtime(). +#define OFFSET_6_HRS (6 * MIN_PER_HOUR * SEC_PER_MIN) #ifdef _VECTORCAST_ #define LOCAL_TO_GTM_TIME_CONVERSION 8U ///< Local time to GTM conversion for VectorCAST @@ -856,6 +858,7 @@ // Convert epoch to date/time structure epoch += YEAR_1900_TO_1970_SECONDS_DIFF; + epoch -= OFFSET_6_HRS; // TODO - why is this needed? ptm = gmtime( &epoch ); // Copy date/time stamp to our structure RTCNewTimestampStruct.years = ptm->tm_year + EPOCH_YEAR; // epoch is seconds from 1/1/1900.