首页 > 代码库 > 看书小记4(《C专家编程》)
看书小记4(《C专家编程》)
日期与时间
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()为负。*/
};
通过time()函数来获得日历时间,如果参数为NULL,函数将只通过返回值返回现在的日历时间:
struct tm* ptr = NULL;
time_t t = time(NULL);
cout<<t<<endl;
gmtime()函数是将日历时间转化为世界标准时间(即格林尼治时间),而localtime()函数是将日历时间转化为本地时间:
ptr = gmtime(&t);
cout<<ptr->tm_hour<<endl;
ptr = localtime(&t);
cout<<ptr->tm_hour<<endl;
可以通过asctime()函数和ctime()函数将时间以固定的格式显示出来:
printf(asctime(ptr));
可以使用strftime()函数将时间格式化为我们想要的格式,格式命令忒多:
char str[128];
strftime( str, sizeof(str), "Today is %A, day %d of %B in the year %Y.\n", ptr);
printf(str);
计时函数是clock(),返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时tick数:
long i = 10000000L;
clock_t start, finish;
double duration;
printf( "Time to do %ld empty loops is ", i );
start = clock();
while( i-- ) ;
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", duration );
使用mktime()函数将用tm结构表示的时间转化为日历时间:
time_t t_of_day;
ptr->tm_year=1997-1900;
ptr->tm_mon=6;
ptr->tm_mday=1;
ptr->tm_hour=0;
ptr->tm_min=0;
ptr->tm_sec=1;
ptr->tm_isdst=0;
t_of_day=mktime(ptr);
printf(ctime(&t_of_day));
最后附上当前的执行结果和参考(http://www.cnblogs.com/Wiseman/archive/2005/10/24/260576.html)