时间和日期函数

jackxiang 2009-10-14 12:48 | |

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”格式符输出该指定格式的字符串。



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是系统常量。



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为年份。



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



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

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为日历时间数据的指针。因此,本例程中的两种输出方式结果是一样的。

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会被设置为适当的值。



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



作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/2057/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]