c语言时间变量
❶ 用c语言编程 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。
#include<stdio.h>
structy_m_d
{
intyear;
intmonth;
intday;
};
intdays(structy_m_ddate)
{
intsum=date.day;
inta[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
inti;
for(i=1;i<date.month;i++)
{
sum+=a[i];
}
if(date.month>2&&((date.year%4==0&&date.year%100!=0)||date.year%400==0))//若闰年,且晚于2月,加一天
sum++;
returnsum;
}
intmain()
{
structy_m_ddate;
intday_sum;
printf("请输入年月日(以空格隔开):");
scanf("%d%d%d",&date.year,&date.month,&date.day);
day_sum=days(date);
printf("%d年%d月%d日是%d年的第%d天 ",date.year,date.month,date.day,date.year,day_sum);
return0;
}
执行结果如下:
输入:2016年3月1日
输出:该日是当年的第61天。2016年是闰年,所以3月1日是第61天=31+29+1
❷ C语言怎样获取系统当前的时间并把它保存到定义的变量中
C语言中读取系统时间的函数为time(),其函数原型为:
#include <time.h>
time_t time( time_t * ) ;
time_t就是long,函数返回从1970年1月1日(MFC是1899年12月31日)0时0分0秒,到现在的的秒数。
C语言还提供了将秒数转换成相应的时间格式的函数:
char * ctime(const time_t *timer); //将日历时间转换成本地时间,返回转换后的字符串指针 可定义字符串或是字符指针来接收返回值
struct tm * gmtime(const time_t *timer); //将日历时间转化为世界标准时间(即格林尼治时间),返回结构体指针 可定义struct tm *变量来接收结果
struct tm * localtime(const time_t * timer); //将日历时间转化为本地时间,返回结构体指针 可定义struct tm *变量来接收结果
例:
#include<time.h>
voidmain()
{
time_tt;
structtm*pt;
char*pc;
time(&t);
pc=ctime(&t);printf("ctime:%s",pc);
pt=localtime(&t);printf("year=%d",pt->tm_year+1900);
}
时间结构体struct tm 说明:
structtm{
inttm_sec;/*秒–取值区间为[0,59]*/
inttm_min;/*分-取值区间为[0,59]*/
inttm_hour;/*时-取值区间为[0,23]*/
inttm_mday;/*一个月中的日期-取值区间为[1,31]*/
inttm_mon;/*月份(从一月开始,0代表一月)-取值区间为[0,11]*/
inttm_year;/*年份,其值等于实际年份减去1900*/
inttm_wday;/*星期–取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推*/
inttm_yday;/*从每年的1月1日开始的天数–取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推*/
inttm_isdst;/*夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
};