1. 程式人生 > >計算兩個時間的差

計算兩個時間的差

//獲取公曆年的天數
int year_alldays(int year)
{
    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 366; else return 365;
}

//獲取公曆年初至某整月的天數
int year_sumday(int year, int month)
{
    int sum = 0;
    int rui[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
    int ping[12] = { 31,28,31,30,31,30,31,31
,30,31,30,31 }; int ruiflag = 0; if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ruiflag = 1; for (int index = 0; index < month - 1; index++) { if (ruiflag == 1) sum += rui[index]; else sum += ping[index]; } return sum; } //獲取從公曆1800年1月25日至當前日期的總天數 int get_g_alldays(int
year, int month, int day) { int i = 1800, days = -24; while (i < year) { days += year_alldays(i); i++; } int days2 = year_sumday(year, month); return days + days2 + day; } int main() { int year1, year2, month1, month2, day1, day2; char buf[30
] ="", buf1[30]="", buf2[30]=""; sscanf(temp, "%[^-]-%[^-]-%[^-]", buf, buf1, buf2); //printf("%s %s %s\n", buf, buf1, buf2); year1 = atoi(buf); month1 = atoi(buf1); day1 = atoi(buf2); sscanf(EndTime, "%[^-]-%[^-]-%[^-]", buf, buf1, buf2); year2 = atoi(buf); month2 = atoi(buf1); day2 = atoi(buf2); int days1 = get_g_alldays(year1, month1, day1); int days2 = get_g_alldays(year2, month2, day2); int days = 0; if (days1 >= days2) days = days1 - days2; else days = days2 - days1; }