6 #ifndef ACE_TIME_EPOCH_CONVERTER_HINNANT_H
7 #define ACE_TIME_EPOCH_CONVERTER_HINNANT_H
49 static int32_t
toEpochDays(int16_t year, uint8_t month, uint8_t day) {
50 uint16_t yearPrime = year - ((month <= 2) ? 1 : 0);
51 uint16_t era = yearPrime / 400;
52 uint16_t yearOfEra = yearPrime - 400 * era;
54 uint8_t monthPrime = (month <= 2) ? month + 9 : month - 3;
56 uint16_t dayOfYearPrime = daysUntilMonthPrime + day - 1;
57 uint32_t dayOfEra = (uint32_t) 365 * yearOfEra + (yearOfEra / 4)
58 - (yearOfEra / 100) + dayOfYearPrime;
60 int32_t dayOfEpochPrime = dayOfEra + 146097 * era;
61 return dayOfEpochPrime
78 int16_t& year, uint8_t& month, uint8_t& day) {
80 int32_t dayOfEpochPrime = epochDays
82 uint16_t era = (uint32_t) dayOfEpochPrime / 146097;
83 uint32_t dayOfEra = dayOfEpochPrime - 146097 * era;
84 uint16_t yearOfEra = (dayOfEra - dayOfEra / 1460 + dayOfEra / 36524
85 - dayOfEra / 146096) / 365;
86 uint16_t yearPrime = yearOfEra + 400 * era;
87 uint16_t dayOfYearPrime = dayOfEra - (365 * yearOfEra + yearOfEra/4
89 uint8_t monthPrime = (5 * dayOfYearPrime + 2) / 153;
92 day = dayOfYearPrime - daysUntilMonthPrime + 1;
93 month = (monthPrime < 10) ? monthPrime + 3 : monthPrime - 9;
94 year = yearPrime + ((month <= 2) ? 1 : 0);
102 return (153 * monthPrime + 2) / 5;
Utility class that converts AceTime epoch days to (year, month, day) in the Gregorian calendar and vi...
static void fromEpochDays(int32_t epochDays, int16_t &year, uint8_t &month, uint8_t &day)
Extract the (year, month, day) fields from AceTime epochDays.
static const int16_t kConverterEpochYear
Epoch year used by this epoch converter.
static uint16_t toDaysUntilMonthPrime(uint8_t monthPrime)
Return the number days before the given monthPrime.
static const int32_t kDaysToConverterEpochFromUnixEpoch
Number of days from Unix epoch (1970-01-01 00:00:00 UTC) to the converter epoch (2000-01-01 00:00:00 ...
static int32_t toEpochDays(int16_t year, uint8_t month, uint8_t day)
Convert (year, month, day) in the Gregorian calendar to days since the converter epoch (2000-01-01 in...