新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
C语言中读取系统时间的函数为time(),其函数原型为:
在岳塘等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站建设、网站制作 网站设计制作按需网站开发,公司网站建设,企业网站建设,品牌网站设计,全网营销推广,成都外贸网站建设公司,岳塘网站建设费用合理。
#include time.h
time_t time( time_t * ) ;
time_t就是long,函数返回从1970年1月1日(MFC是1899年12月31日)0时0分0秒,到现在的的秒数。可以调用ctime()函数进行时间转换输出:
char * ctime(const time_t *timer);
将日历时间转换成本地时间,按年月日格式,进行输出,如:
Wed Sep 23 08:43:03 2015
C语言还提供了将秒数转换成相应的时间结构的函数:
struct tm * gmtime(const time_t *timer); //将日历时间转化为世界标准时间(即格林尼治时间)
struct tm * localtime(const time_t * timer); //将日历时间转化为本地时间
将通过time()函数返回的值,转换成时间结构struct tm :
struct tm {
int tm_sec; /* 秒 – 取值区间为[0,59] */
int tm_min; /* 分 - 取值区间为[0,59] */
int tm_hour; /* 时 - 取值区间为[0,23] */
int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */
int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
int tm_year; /* 年份,其值等于实际年份减去1900 */
int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
};
编程者可以根据程序功能的情况,灵活的进行日期的读取与输出了。
例如:
#includetime.h
main()
{
time_t timep;
struct tm *p;
time (timep);
p=gmtime(timep);
printf("%d\n",p-tm_sec); /*获取当前秒*/
printf("%d\n",p-tm_min); /*获取当前分*/
printf("%d\n",8+p-tm_hour);/*获取当前时,这里获取西方的时间,刚好相差八个小时*/
printf("%d\n",p-tm_mday);/*获取当前月份日数,范围是1-31*/
printf("%d\n",1+p-tm_mon);/*获取当前月份,范围是0-11,所以要加1*/
printf("%d\n",1900+p-tm_year);/*获取当前年份,从1900开始,所以要加1900*/
printf("%d\n",p-tm_yday); /*从今年1月1日算起至今的天数,范围为0-365*/
}
标准库的time.h里有时间函数
time_t time (time_t *timer)
计算从1970年1月1日到当前系统时间,并把结果返回给timer变量,
函数本身返回的也是这个结果.time_t这个类型其实就是一个int.
另有:
double difftime ( time_t timer2, time_t timer1 )
把返回time2和time1所储存的时间的差.
如果用 time.h的话,就太简单了,有专门的处理函数:
#include "time.h"
#include "stdio.h"
void puttime()
{
tm *ptr;
time_t lt;
lt=time(NULL);
ptr=localtime(lt);
printf(asctime(ptr));
}
int main()
{
puttime();
return 0;
}
什么时候运行,就显示是什么时间:
我运行时:星期三 1月 15号 时间 年
#include stdio.h
#include windows.h
/* 以公元阳历来计算(非农历) */
int _MONTH[]={{31},{28},{31},{30},{31},{30},{31},{31},{30},{31},{30},{31}};
int days(int *m,int *day)
{
int i,md=0;
unsigned int d;
for(i=0;i(*m-1)(i11);i++)
md=md+_MONTH[i];
d=md+(*day);
return (int)((d+365)-365);
}
void main()
{
int month,day;
RESET:
month=day=1;
printf("月份:");
scanf("%d",month);
printf("日期:");
scanf("%d",day);
while((month1||month12)||(day1||day31))
{
printf("月份或日期有误,请重新输入!\n");
fflush(stdin);
Sleep(3000);
goto RESET;
}
printf("今天是今年的第%d天\n",days(month,day));
}
月份与日期是用户输入接受来的,如果你想一运行就显示当前日期是今年的第几天。你可以使用time.h头文件里的有关函数来获取。获取后你只需将将强制转换为int型即可带入实参。具体如何获取网上有很多成熟的例子。
这个例子的实现原理与日历实现的原理一样:
如日历的原理如下截图: