实现加一秒后,年、月、日、时、分、秒的显示

本文介绍了一个简单的C语言程序,该程序通过用户输入当前日期和时间,验证其有效性,并计算出在一秒钟之后的确切日期和时间。程序考虑了闰年和平年的不同规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >







//--------------实现加一秒后年月日时分秒的显示----------------

struct _tag_data
{
	unsigned int year;
	unsigned char month;
	unsigned char day;
	unsigned char hour;
	unsigned char minute;
	unsigned char second;
	
};

void test_9()
{
	struct _tag_data data1 = {2001,2,28,23,59,59};
	struct _tag_data data2 = {0,0,0,0,0,0};
	
	char year[5];
	char month[3];
	char day[3];
	char hour[3];
	char minute[3];
	char second[3];
	
	puts("please input year :");
	gets(year);
	puts("please input month :");
	gets(month);
	puts("please input day :");
	gets(day);
	puts("please input hour :");
	gets(hour);
	puts("please input minute :");
	gets(minute);
	puts("please input second :");
	gets(second);
	
	data1.year = atoi(year);
	data1.month = atoi(month);
	data1.day = atoi(day);
	data1.hour = atoi(hour);
	data1.minute = atoi(minute);
	data1.second = atoi(second);
	
	//输入数据合法性检查 
	if((data1.year<=0)||(data1.year>9999))   //Year:1~9999 
	{
		return ;	
	}
	if((data1.month<=0)||(data1.month>=13))  //Month:1~12
	{
		return ;	
	}
	
	if(data1.year%400==0)    //闰年29天 
	{
		if((data1.day<=0)||(data1.day>=30))	  //闰年2月有29天:1-29 
		{
			return ;	
		}
	}	
	else if((data1.year%100!=0)||(data1.year%4==0)) 
	{
		if((data1.day<=0)||(data1.day>=30))    //闰年2月有29天:1-29 
		{
			return ;	
		}	
	}
	else if(data1.year%4!=0)    //平年 
	{
		if((data1.month==1)||(data1.month==3)||(data1.month==5)||(data1.month==7)||(data1.month==8)||(data1.month==10)||(data1.month==12))   //31天	
		{
			if((data1.day<=0)||(data1.day>=32))  
			{
				return;	
			}	
		}
		else if((data1.month==4)||(data1.month==6)||(data1.month==9)||(data1.month==11))     //30天 
		{
			if((data1.day<=0)||(data1.day>=31))
			{
				return ;	
			}	
		} 
	}
	
	if((data1.hour<0)||(data1.hour>=24))   //Hour:0~23
	{
		return ;	
	}
	if((data1.minute<0)||(data1.minute>=61))  //Minute:0~59
	{
		return ;	
	}
	if((data1.second<0)||(data1.second>=61))  //Second:0~59
	{
		return ;	
	}
	
	//加 1 second 操作 
	data2.second = data1.second+1;
	if(data2.second >= 60)
	{
		data2.minute += 1;
		data2.second = 0;	
	}
	data2.minute += data1.minute;
	if(data2.minute >= 60)
	{
		data2.hour += 1;
		data2.minute = 0;	
	}
	data2.hour += data1.hour;
	if(data2.hour >=24)
	{
		data2.day +=1;
		data2.hour = 0;	
	}
	data2.day += data1.day; 
	if((data1.month==1)||(data1.month==3)||(data1.month==5)||(data1.month==7)||(data1.month==12))
	{
		if(data2.day >= 32)
		{
			data2.month += 1;
			data2.day = 1;	
		}
	}
	else if((data1.month==4)||(data1.month==6)||(data1.month==9)||(data1.month==11))
	{
		
		if(data2.day >= 31)
		{
			data2.month += 1;
			data2.day = 1;	
		}			
	}
	else if(data1.month==2)
	{
		//平、闰年判断 
		if(data1.year%400==0)              // 闰年 29天 
		{
			if(data2.day >= 30)  
			{
				data2.month += 1;
				data2.day = 1;	
			}	
		}
		else if((data1.year%100 != 0)&&(data1.year%4 == 0))    // 闰年 29天
		{
			if(data2.day >= 30)  
			{
				data2.month += 1;
				data2.day = 1;	
			}	
		} 
		else if(data1.year%4 != 0)         //平年 28 
		{
			if(data2.day >= 29) 
			{
				data2.month += 1;
				data2.day = 1;	
			}	
		}	
	}
	//------
	data2.month += data1.month;
	if(data2.month>=13)
	{
		data2.year+=1;
		data2.month = 1;	
	}
	
	data2.year += data1.year;
	
	//------show data and time ------
	printf("Current data & time is :");
	printf("%d/",data1.year);
	printf("%d/",data1.month);
	printf("%d,",data1.day);
	printf("%d:",data1.hour);
	printf("%d:",data1.minute);
	printf("%d.\n",data1.second); 
	
	printf("next second's data & time is :"); 
	printf("%d/",data2.year);
	printf("%d/",data2.month);
	printf("%d,",data2.day);
	printf("%d:",data2.hour);
	printf("%d:",data2.minute);
	printf("%d.\n",data2.second); 
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值