当前位置:文档之家› c语言函数库-第六章(时间和日期函数)

c语言函数库-第六章(时间和日期函数)

c语言函数库
第六章(时间和日期函数)

1. asctime:日期和时间转换函数
2. clock:测定运行时间函数
3. ctime:时间转换函数
4. difftime:计算时间差函数
5. gmtime: 将日历时间转换为GMT
6. localtime:把日期和时间转变为结构
7. mktime:时间类型转换函数
8. time:获取系统时间函数
1. asctime:日期和时间转换函数
函数原型:char *asctime(const struct tm *tblock)
头文件:#include
是否是标准函数:是
函数功能:本函数把指定的tm结构类的日期(分段日期)转换成下列格式的字符串:
Mon Nov 21 11:31:54 1983\n\0
返回值:转换后的字符串指针。
例程如下: 用asctime函数转换时间格式。
#include
#include
#include
int main(void)
{
struct tm t;
char str[80];
/*设置tm结构类变量t的时间成员 */
t.tm_sec = 1; /* 秒*/
t.tm_min = 30; /*分钟 */
t.tm_hour = 9; /* 时 */
t.tm_mday = 22; /* 日 */
t.tm_mon = 11; /* 月 */
t.tm_year = 56; /* 年 */
t.tm_wday = 4; /*星期*/
t.tm_yday = 0; /*不必设置*/
t.tm_isdst = 0; /*不必设置 */
/*格式转换 */
strcpy(str, asctime(&t));
printf("%s\n", str);
return 0;
}
例程说明:
(1)首先定义tm结构类的变量t,并设置t的时间成员。
(2)通过函数asctime将t的时间转换为指定格式。
(3)输出转换后的指定格式的字符串。
本例程的运行结果为:
Thu Dec 22 09:30:01 1956
注意:
函数asctime返回指向转换后的指定格式的字符串指针。本例程通过函数strcpy将指定格式的字符串的指针拷贝给str,并通过“%s”格式符输出该指定格式的字符串。


2. clock:测定运行时间函数
函数原型:clock_t clock(void)
头文件:#include
是否是标准函数:是
函数功能:确定所用的处理器时间。函数clock返回实现环境中从程序运行开始所用的处理器时间的最佳近似值,仅与程序启动有关。clock函数无参数。
返回值:如果成功,返回从程序开始运行经过的时间;否则(系统没有内部时钟)返回-1。
例程如下: 应用clock函数计算程序运行时间
#include
#include
#include
int main(void)
{
clock_t start, end;
/*程序运行到现在的时间*/
start = clock();
/*间隔1000毫秒*/
delay(1000);
/*程序运行到现在的时间*/
end = clock();
printf("The time was: %f\n", (end - start) / CLK_TCK);
return 0;
}
例程说明:
(1)首先用clock函数记录下程序运行到目前所用的时间,并将该时间存入clock_t类型的变量start

中。
(2)应用delay函数使程序暂停1000毫秒。
(3)再用clock函数记录下程序运行到目前所用的时间,并将该时间存入clock_t类型的变量end中。
(4)计算出时间差(end-start)获得程序暂停delay的时间。再除以常量CLK_TCK,转化为以秒为单位。
本例程的执行结果为:
The time was:0.989011
注意:CLK_TCK是系统常量。


3. ctime:时间转换函数
函数原型:char *ctime(const time_t *time)
头文件:#include
是否是标准函数:是
函数功能:将time所指向的日历时间转换为字符串形式的本地时间。它等价于函数调用asctime(localtime(timer))。字符串的格式为:DDD MMM dd hh:mm:ss YYYY
返回值:转换后的字符串指针。
例程如下: 用 ctime函数转换时间格式。
#include
#include
int main(void)
{
time_t t;
time(&t);
printf("Today's date and time: %s\n", ctime(&t));
return 0;
}
例程说明:
(1)首先定义time_t类型的变量t。
(2)应用函数time获取系统时间。
(3)通过函数ctime 将获取的日历时间time_t转换为规定格式的字符串表示。
本例程的运行结果为:
Today's date and time: Sat Nov 10 00:57:14 2007
注意:
函数ctime是将日历时间直接转换为规定格式的字符串表示:
DDD MMM dd hh:mm:ss YYYY
其中,“DDD”表示一星期中的某一天,例如“Sat”表示星期六;“MMM”表示月份,例如“Nov”就表示十一月;dd hh:mm:ss为时钟显示;YYYY为年份。


4. difftime:计算时间差函数
函数原型:double difftime(time_t time2, time_t time1)
头文件:#include
是否是标准函数:是
函数功能:计算两个日历时间time1和time2的时间间隔。其中time1为指定的第一个时间,time2为指定的第二个时间。time1要小于或等于time2。
返回值:返回时间差,以秒为单位的double类型。
例程如下: 应用函数difftime计算时间差
#include
#include
#include
#include
int main(void)
{
time_t first, second;
clrscr();
/*获得系统时间 */
first = time(NULL);
/* 等待2秒 */
delay(2000);
/* 再次获得系统时间 */
second = time(NULL);
printf("The Interval is: %f seconds\n",difftime(second,first));
getch();
return 0;
}
例程说明:
(1)首先通过time函数获得系统时间,并将其存储在time_t类型变量first中。
(2)应用delay函数使程序暂停2000毫秒。
(3)再次通过time函数获得系统时间,并将其存储在time_t类型变量second中。
(4)通过函数difftime获得first和second的时间间隔,并显示在屏幕上。

本例程的执行结果为:
The Interval is: 2.000000 seconds


5. gmtime: 将日历时间转换为GMT
函数原型:struct tm *gmtime(const time_t *timer)
头文件:#include
是否是标准函数:是
函数功能:把日期和时间转换为格林尼治标准时间(GMT)。
返回值:指向struct tm分段日期结构类型的指针。
例程如下: 将日历时间转换为GMT。
#include
#include
#include
int main(void)
{
time_t t;
struct tm *gmt;
t=time(NULL);
gmt=gmtime(&t);
printf("GMT is:%s", asctime(gmt));
return 0;
}
例程说明:
(1)首先利用time函数获取系统时间,它是一个日历时间。
(2)再应用gmtime函数将该日历时间转换为格林尼治标准时间(GMT)。该函数返回一个指向struct tm分段日期结构类型的指针。
(3)最后应用asctime函数将分段日期转换成规定格式的字符串表示。
本例程的运行结果为:
GMT is:Sat Nov 10 06:25:13 2007


6. localtime:把日期和时间转变为结构
函数原型:struct tm *localtime(const time_t *timer)
头文件:#include
是否是标准函数:是
函数功能:把timer所指的日历时间转换为以本地时间表示的分段时间。
返回值:指向struct tm分段日期结构类型的指针。
例程如下: 利用函数localtime将日历时间转换为分段时间。
#include
#include
#include
int main(void)
{
time_t timer;
struct tm *tblock;
timer = time(NULL);
tblock = localtime(&timer);
printf("Local time is: %s\n", asctime(tblock));
printf("Today's date and time: %s\n", ctime(&timer)) ;
getchar();
return 0;
}
例程说明:
(1)首先利用time函数获取系统时间,它是一个日历时间。
(2)利用函数localtime将获取的系统时间(它是一个日历时间)转换为分段时间tm。
(3)利用函数asctime将该分段时间转换为规定的字符串格式,并显示。
(4)利用函数ctime直接将日历时间转换为规定的字符串格式,并显示。
本例程的运行结果为:
Local time is: Sat Nov 10 01:47:59 2007
Today's date and time: Sat Nov 10 01:47:59 2007
注意:
前面讲过,函数调用asctime(localtime(&time))等价于函数调用ctime(&time),其中&time为日历时间数据的指针。因此,本例程中的两种输出方式结果是一样的。


7. mktime:时间类型转换函数
函数原型:time_t mktime(struct tm*timeptr)
头文件:#include
是否是标准函数:是
函数功能:将tm类型的结构指针timeptr指向的结构体中的日期与时间转换为time_t类型的日期和时间,并返回。
返回

值:time_t类型的日期和时间,如果日历不能被表达,返回-1。
例程如下: 输出指定日期是一周的哪一天。
#include
#include
#include
#include
int main(void)
{
char *week_day [8]={ "Sun",
"Mon",
"Tue",
"Wed",
"Fri",
"Sat",
"Unknow",
};
struct tm t;
/*指定日期时间*/
t.tm_year=99;
t.tm_mon=1;
t.tm_mday=1;
t.tm_hour=0;
t.tm_min=0;
t.tm_sec=1;
t.tm_isdst=-1;
/*调用函数mktime设置tm_wday成员*/
if(mktime(&t)==-1)
t.tm_wday=7;
printf("The day is:%s",week_day[t.tm_wday]);
getch();
return 0;
}
例程说明:
(1)首先定义一个struct tm结构类型的变量t,并指定t 的日期与时间。
(2)通过函数mktime将t中指定的分段时间转化为日历时间。如果日历时间不能被表达,即返回-1,则将t.tm_wday赋值为0。
(3)根据字符串数组week_day的初值,显示t中指定的时间是一周中的哪一天。
注意:
1、struct tm是time.h中定义的结构体,用来指定分段日期与时间。tm结构如下:
struct tm {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
};
2、调用函数mktime的作用是将tm类型结构指针指定的日期和时间转换为time_t类型的日历时间,该值与函数time返回值的编码方式相同。函数mktime调用成功时,成员tm_wday被设置为适当的值,并返回一个time_t类型的日历时间。因此本例程中,如果mktime(&t)==-1,则表示函数mktime执行不成功,则将t.tm_wday置为7,输出"Unknow"。否则t. tm_wday会被设置为适当的值。

8. time:获取系统时间函数
函数原型:time_t time(time_t *tp)
头文件:#include
是否是标准函数:是
函数功能:获取系统时间。
返回值:time_t类型的当前日历时间的最佳近似值,如果日历不能被表达,返回-1。
例程如下: 应用函数time获取系统时间。
#include
#include
int main(void)
{
time_t t;
t = time(&t);
printf("The number of seconds since January 1, 1970 is %ld",t);
return 0;
}
例程说明:
(1)首先定义time_t类型的变量t。
(2)通过函数time获取从GMT1970年1月1日00:00:00开始经过的秒数。
(3)输出该秒数。
本例程的运行结果为:
The number of seconds since January 1, 1970 is 1047682192



相关主题
文本预览
相关文档 最新文档