Я ищу способ в C определить дату по смещению даты (т.е. количество дней с 31 декабря 1899 г.). Например, void get_date(const struct date start_date, int offset);
. По сути, простая библиотека со структурой date
(но без поддержки времени). Он должен обрабатывать високосные годы и специфические для даты вещи, но ничего не связано со временем (например, високосные секунды и другие осложнения).
struct date start_date = {
.date_day = 31, // 31
.date_month = 12, // December
.date_year = 1899, // 1899
};
/* From and including: December 31, 1899
* To, but not including : December 8, 2010
* It's 40,519 days from the start date to the end date,
* but not including the end date: [start_date, end_date) */
get_date(start_date, 40519); // Prints something like "2010-12-08".
В идеале библиотека должна поддерживать юлианские дни , потенциально восходящие к эпохе 1 января 4713 г. до н.э.