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 @   黄某人233  阅读(324)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示