unsigned long getMillisecondsSinceUnixEpoch(DateTime dt) { unsigned long seconds = 0; // Get everything as seconds first seconds += dt.second; seconds += dt.minute * SECONDS_PER_MINUTE; seconds += dt.hour * SECONDS_PER_HOUR; seconds += dt.day * SECONDS_PER_DAY; const unsigned int year = convertToFullYear(dt.partialYear); seconds += getDayCountUpToMonthWithYear(dt.month, year) * SECONDS_PER_DAY; seconds += getDayCountUpToYearSinceUnixEpoch(year) * SECONDS_PER_DAY; // And then convert seconds to millis and add in the remaining millis return seconds * MILLIS_PER_SECOND + dt.millisecond; }
millis_t getMillisecondsSinceUnixEpoch(DateTime dt) { if (!isValidDateTime(dt)) return 0ll; millis_t seconds = 0; // Get everything as seconds first. No changes since 0 based. seconds += dt.second; seconds += dt.minute * SECONDS_PER_MINUTE; seconds += dt.hour * SECONDS_PER_HOUR; // Subtract 1 from day since they start at 1 instead of 0. seconds += (dt.day - 1) * SECONDS_PER_DAY; seconds += getDayCountUpToMonthWithYear(dt.month, dt.year) * SECONDS_PER_DAY; seconds += getDayCountUpToYearSinceUnixEpoch(dt.year) * SECONDS_PER_DAY; // And then convert seconds to millis and add in the remaining millis return seconds * MILLIS_PER_SECOND + dt.millisecond; }
unsigned int getDayCountUpToPartialYearSinceUnixEpoch(const unsigned int partialYear) { return getDayCountUpToYearSinceUnixEpoch(convertToFullYear(partialYear)); }