Skip to content

Instantly share code, notes, and snippets.

@zachariahtimothy
Last active November 17, 2016 16:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zachariahtimothy/aa9acd432bd382880381052016412cc6 to your computer and use it in GitHub Desktop.
Save zachariahtimothy/aa9acd432bd382880381052016412cc6 to your computer and use it in GitHub Desktop.
Calculate an average date in C++ based on array of dates
int wean_dates_size = bgi->wean_dates.size();
if (wean_dates_size > 0) {
pigknows::Date wean_date;
pigknows::DoubleCell dateTotals;
// Get a baseline time (date does not matter as since it will be used )
struct std::tm baseTime = {0,0,0,27,9,82}; /* October 27, 1982 (Zachs bday :) */
std::time_t x = std::mktime(&baseTime);
for(int i=0; i< wean_dates_size; ++i) {
wean_date = bgi->wean_dates[i];
struct std::tm b = {0,0,0,wean_date.day(),wean_date.month() - 1,wean_date.year() - 1900};
std::time_t y = std::mktime(&b);
double difference = std::difftime(y, x);
dateTotals.def++;
dateTotals.val += difference;
}
int avgWeanDayThousandDay = (dateTotals.val / dateTotals.def);
baseTime.tm_sec += avgWeanDayThousandDay;
std::mktime(&baseTime);
bgi->avg_wean_date = pigknows::Date((baseTime.tm_year + 1900), (baseTime.tm_mon + 1), baseTime.tm_mday);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment