#include #include #include #include #include #define SECS_IN_DAY 86400 #define SECS_IN_TWO_WEEKS 1209600 #define SECS_IN_YEAR 31536000 int main(int argc, char *argv[]) { time_t lStartDate = 0; char cTmp[3]; struct tm *TimePtr; int iYear = 0; int iDay = 0; int iFirstMon; printf("argc == %d\n", argc); if (argc == 3) { sprintf(cTmp, "%c%c", argv[1][0], argv[1][1]); iDay = atoi(cTmp); sprintf(cTmp, "%c%c%c%c", argv[2][0], argv[2][1],argv[2][2], argv[2][3]); iYear = atoi(cTmp) - 1900; } else { printf("Usage: %s day year\nday == 1st January pay day\nyear == year to work on\n", argv[0]); return 255; } time(&lStartDate); TimePtr = localtime(&lStartDate); lStartDate = mktime(TimePtr); TimePtr->tm_mday = iDay; TimePtr->tm_mon = 0; TimePtr->tm_year = iYear; lStartDate = mktime(TimePtr); TimePtr = localtime(&lStartDate); iFirstMon = TimePtr->tm_mon; printf("%d/%d/%d\n", TimePtr->tm_mon+1, TimePtr->tm_mday, TimePtr->tm_year+1900); while (TimePtr->tm_year == iYear) { lStartDate += SECS_IN_TWO_WEEKS; TimePtr = localtime(&lStartDate); if (iFirstMon != TimePtr->tm_mon) { printf("\n"); iFirstMon = TimePtr->tm_mon; } printf("%d/%d/%d\n", TimePtr->tm_mon+1, TimePtr->tm_mday, TimePtr->tm_year+1900); } return 0; }