long Months2Seconds(int m) { long tot_days = 0; int this_month, i, month, year; if (m == 0) { return 0; } this_month = Month2Int(VMONTH); year = IntFromString(VYEAR); for (i = 0; i < m; i++) { month = (this_month - i) % 12; while (month < 0) { month += 12; year--; } tot_days += GetMonthLength(month, year); } return (long) tot_days *3600 * 24; }
long TimeAbs2Int(const char *s) { time_t cftime; int i; char mon[4], h[3], m[3]; long month = 0, day = 0, hour = 0, min = 0, year = 0; if (s == NULL) { return CF_NOINT; } year = IntFromString(VYEAR); if (strstr(s, ":")) /* Hr:Min */ { sscanf(s, "%2[^:]:%2[^:]:", h, m); month = Month2Int(VMONTH); day = IntFromString(VDAY); hour = IntFromString(h); min = IntFromString(m); } else /* date Month */ { sscanf(s, "%3[a-zA-Z] %ld", mon, &day); month = Month2Int(mon); if (Month2Int(VMONTH) < month) { /* Wrapped around */ year--; } } CfDebug("(%s)\n%ld=%s,%ld=%s,%ld,%ld,%ld\n", s, year, VYEAR, month, VMONTH, day, hour, min); cftime = 0; cftime += min * 60; cftime += hour * 3600; cftime += (day - 1) * 24 * 3600; cftime += 24 * 3600 * ((year - 1970) / 4); /* Leap years */ for (i = 0; i < month - 1; i++) { cftime += GetMonthLength(i, year) * 24 * 3600; } cftime += (year - 1970) * 365 * 24 * 3600; CfDebug("Time %s CORRESPONDS %s\n", s, cf_ctime(&cftime)); return (long) cftime; }