int main ()
{
time_t time_raw_format;
struct tm * time_struct;
char buf [100];
time ( &time_raw_format );
time_struct = localtime ( &time_raw_format );
strftime (buf,100,"It is now: %I:%M%p.",time_struct);
puts (buf);
return 0;
}
该例子程序的输出结果如下:
It is now: 02:45PM.
从以上的例子可以看到,利用从 time() 得到的时间值,可以调用各种转换函
数将其转换成更方便人们阅读的形式。
此外从前面的总结中我们也了解到,还有两个 C 函数可以获得当前时间,
gettimeofday() 以及 clock_gettime(),它们分别返回 struct timeval 或
者 timespec 代表的高精度的时间值。在目前的 GLibC 中,还没有直接把
struct timeval/timespec 转换为 struct tm 的函数。一般的做法是将
timeval 中的 tv_sec 转换为 tm,使用上面所述的方法转换为字符串,最后
在显示的时候追加上 tv_usec,比如下面的例子代码:
清单 5,更多时间显示转换
struct timeval tv;
time_t nowtime;
struct tm *nowtm;
char tmbuf[64], buf[64];
gettimeofday(&tv, NULL); //获取当前时间到 tv
nowtime = tv.tv_sec; //nowtime 存储了秒级的时间值
nowtm = localtime(&nowtime); //转换为 tm 数据结构
//用 strftime 函数将 tv 转换为字符串,但 strftime 函数只能达到秒
级精度
strftime(tmbuf, sizeof tmbuf, "%Y-%m-%d %H:%M:%S", nowtm);
//将毫秒值追加到 strftime 转换的字符串末尾
snprintf(buf, sizeof buf, "%s.%06d", tmbuf, tv.tv_usec);
时间的测量