C语言 日期转换思路

int nextDay(){
    int mDay[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
    int year,n;
    while(scanf("%d%d",&year,&n) != EOF){
        int mon = 1;
        int day = 1;
        for(int i = 0;i<n-1;i++){
            bool isLeap = year%400==0 || year%100!=0 && year%4==0;
            if(isLeap){
                mDay[2] = 29;
            }else{
                mDay[2] = 28;
            }
            day++;
            if(day>mDay[mon]){
                mon++;
                day = 1;
                if(mon>12){
                    year++;
                    mon = 1;
                } 
            }
        }
        printf("%04d-%02d-%02d\n",year,mon,day);
    }
}

输入是 一个年份和该年份第n天

输出是该天是YYYY-MM-DD格式的日期

在代码中将看作是该年份的第1天就是1月1日

然后一共是第n天 每过一天 就加一天

循环n-1次

其中采用空间换时间的思想将每个月天数存储在一个数组

当天数加到超过本月份的天数时 就让天数归为1日 月份加一

同理年份也是如此

最终得到YYYY-MM-DD格式的日期

posted @ 2023-03-15 14:00  黄某人233  阅读(287)  评论(0编辑  收藏  举报