C/C++——C/C++时间函数使用方法
作者:来源:中国 IT 实验室发布者:admin
时间:2009-07-15 17:52:58点击:2224
1. 时间的定义
C/C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多
次问到过 C++语言中对时间的操作、获取和显示等等的问题。下面,在这篇文章中,笔者
将主要介绍在 C/C++中时间和日期的使用方法。
通过学习许多 C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解
一些“时间”和“日期”的概念,主要有以下几个:
Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大
家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。比如,中国内地的时间
与 UTC 的时差为+8,也就是 UTC+8.美国是 UTC-5.
Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的
时间。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标
准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所
以可以说日历时间是“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个标准时
间点来说,日历时间都是一样的。
epoch:时间点。时间点在标准 C/C++中是一个整数,它用此时的时间和标准时间点相
差的秒数(即日历时间)来表示。
clock tick:时钟计时单元(而不把它叫做时钟滴答次数),一个时钟计时单元的时间长
短是由 CPU 控制的。一个 clock tick 不是 CPU 的一个时钟周期,而是 C/C++的一个基本
计时单位。
我们可以使用 ANSI 标准库中的 time.h 头文件。这个头文件中定义的时间和日期所使用
的方法,无论是在结构定义,还是命名,都具有明显的 C 语言风格。下面,我将说明在
C/C++中怎样使用日期的时间功能。
2. 计时
C/C++中的计时函数是 clock(),而与其相关的数据类型是 clock_t.在 MSDN 中,查得
对 clock 函数定义如下:
clock_t clock( void );
这个函数返回从“开启这个程序进程”到“程序中调用 clock()函数”时之间的 CPU 时钟计
时单元(clock tick)数,在 MSDN 中称之为挂钟时间(wal-clock)。其中 clock_t 是用来
保存时间的数据类型,在 time.h 文件中,我们可以找到对它的定义:
#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif
很明显,clock_t 是一个长整形数。在 time.h 文件中,还定义了一个常量
CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:
#define CLOCKS_PER_SEC ((clock_t)1000)
可以看到每过千分之一秒(1 毫秒),调用 clock()函数返回的值就加 1.下面举个例子,
你可以使用公式 clock()/CLOCKS_PER_SEC 来计算一个进程自身的运行时间:
void elapsed_time()