输出时间函数,C

编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入 2004 年 12 月 31 日 23  时59 分 59 秒,则输出 2005 年 1 月 1 日 0 时 0 分 0 秒。

//year.month.day.hour.minute.second

#include <stdio.h>

void Nexttime(int *year,int *month, int *data,int *hour,int *minute,int *second)
{
 int day;
 (*second)++;//秒加1
 if (*second >= 60)//60S后,分钟加1,秒归零
 {
  *second=0;
  (*minute) ++;
  if (*minute >= 60)//60分钟后,小时加1,分钟归零
  {
   *minute=0;
   (*hour)++;
   if (*hour>=24)//24小时后,日期加1,小时归零
   {
    *hour = 0;
    (*data)++; 
 

  //判断每月的天数
   switch(*month)
   {

//31天的月数
   case 1:
   case 3:
   case 5:
   case 7:
   case 8:
   case 10:
   case 12:
    day=31;
    break;

//2月的天数,闰年28天,其余29天
   case 2:
    if (*year %400 ==0 && *year % 100 !=0
     && *year % 4 ==0)//判断闰年
    {
     day=29;
    }
    else
    {
     day=28;
    }
    break;

//剩下的30天
   default:
    day=30;
    break;
   }
   if (*data>day) //如果*data++比上面计算的day数值大,则月份加1,且日期归零
   {
    *data=1;
    (*month)++;
    if(*month>12)//12月后,年份加一,月份归零
    {
     *month=1;
     (*year)++;
    }
   }
  }
 }
}
}

//主函数
void main()
{
 int year=2004,month=12,data=31,hour=23,minute=59,second=59;
 Nexttime(&year,&month,&data,&hour,&minute,&second);
 printf("The result:%d-%d-%d %d:%d:%d",year,month,data,hour,minute,second);
}

 

在此处,最大的错误是没有认清:* 的运算级比 ++ 小,所以开始出来时一直都是原值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值