怎么计算某年的某月某日到某年某月某日多少天

如题所述

这个问题可以分解为

(y1,m1,d1)到(y2,m2,d2)有多少天转化为(y1,m1,d1)到(1,1,1)的天数-(y2,m2,d2)到(1,1,1)的天数

至于(y,m,d)到(1,1,1)的天数可以参考我这个答案

https://zhidao.baidu.com/question/245140538601498844

#include <stdio.h>
 
int IsLeapYear(int year)    
{   
    return ((year % 4 == 0) && (year % 100 != 0) || year % 400 == 0);   
}
 
int dayOfMonth(int year, int month)
{
    int day = 0;
    switch(month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            day = 31;
            break;
        case 2:
            day = 28 + IsLeapYear(year);
            break;
        default:
            day = 30;
            break;
    }
    return day;
}
 
int days(int y, int m, int d)
{
    int i, j;
    int total = 0;
    for(i = 1; i <= y -1;i++)
    {
        //1.1 - 12.23
        for(j = 1;j <= 12;j++)
            total += dayOfMonth(i, j);
    }
    //1 - m-1
    for(j = 1;j <= m-1;j++)
        total += dayOfMonth(y, j);
    total += d;
    return total;
}

温馨提示:答案为网友推荐,仅供参考
相似回答