static int dateToDayInYear(int year, int month, int day) { year += month / 12; month %= 12; if (month < 0) { month += 12; --year; } int yearday = static_cast<int>(floor(msFrom1970ToYear(year) / msPerDay)); int monthday = monthToDayInYear(month, isLeapYear(year)); return yearday + monthday + day - 1; }
double dateToDaysFrom1970(int year, int month, int day) { year += month / 12; month %= 12; if (month < 0) { month += 12; --year; } double yearday = floor(daysFrom1970ToYear(year)); ASSERT((year >= 1970 && yearday >= 0) || (year < 1970 && yearday < 0)); int monthday = monthToDayInYear(month, isLeapYear(year)); return yearday + monthday + day - 1; }