程序14-11 linux/include/time.h


  1 #ifndef _TIME_H

  2 #define _TIME_H

  3

  4 #ifndef _TIME_T

  5 #define _TIME_T

  6 typedef long time_t;               // GMT 197011日午夜0时起开始计的时间(秒)。

  7 #endif

  8

  9 #ifndef _SIZE_T

 10 #define _SIZE_T

 11 typedef unsigned int size_t;

 12 #endif

 13

 14 #ifndef NULL

 15 #define NULL ((void *) 0)

 16 #endif

 17

 18 #define CLOCKS_PER_SEC 100         // 系统时钟滴答频率,100HZ

 19

 20 typedef long clock_t;              // 从进程开始执行计起的系统经过的时钟滴答数。

 21

 22 struct tm {

 23         int tm_sec;                // 秒数 [059]

 24         int tm_min;                // 分钟数 [ 059]

 25         int tm_hour;               // 小时数 [059]

 26         int tm_mday;               // 1个月的天数 [031]

 27         int tm_mon;                // 1年中月份 [011]

 28         int tm_year;               // 1900年开始的年数。

 29         int tm_wday;               // 1星期中的某天 [06](星期天 =0)。

 30         int tm_yday;               // 1年中的某天 [0365]

 31         int tm_isdst;              // 夏令时标志。正数 - 使用;0 - 没有使用;负数 - 无效。

 32 };

 33

    // 判断是否为闰年的宏。

 34 #define __isleap(year)  \

 35   ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 1000 == 0))

 36  

    // 以下是有关时间操作的函数原型。

    // 确定处理器使用时间。返回程序所用处理器时间(滴答数)的近似值。

 37 clock_t clock(void);

    // 取时间(秒数)。返回从1970.1.1:0:0:0开始的秒数(称为日历时间)。

 38 time_t time(time_t * tp);

    // 计算时间差。返回时间time2time1之间经过的秒数。

 39 double difftime(time_t time2, time_t time1);

    // tm结构表示的时间转换成日历时间。

 40 time_t mktime(struct tm * tp);

 41

    // tm结构表示的时间转换成一个字符串。返回指向该串的指针。

 42 char * asctime(const struct tm * tp);

    // 将日历时间转换成一个字符串形式,如“Wed Jun 30 21:49:08:1993\n”

 43 char * ctime(const time_t * tp);

    // 将日历时间转换成tm结构表示的UTC时间(UTC - 世界时间代码Universal Time Code)。

 44 struct tm * gmtime(const time_t *tp);

    // 将日历时间转换成tm结构表示的指定时区(Time Zone)的时间。

 45 struct tm *localtime(const time_t * tp);

    // tm结构表示的时间利用格式字符串fmt转换成最大长度为smax的字符串并将结果存储在s中。

 46 size_t strftime(char * s, size_t smax, const char * fmt, const struct tm * tp);

    // 初始化时间转换信息,使用环境变量TZ,对zname变量进行初始化。

    // 在与时区相关的时间转换函数中将自动调用该函数。

 47 void tzset(void);

 48

 49 #endif

 50