Linux下的时间戳
时间戳是什么东东?
不知道的哥哥姐姐GG去吧,下面介绍下如何获取指定时间的时间戳, 在终端输入 date -d "2010-11-09 12:30:30" +%s
请注意‘+‘前面的空格, bash对空格是敏感的,许多命令不能被解析的时候试一下加一个空格,或者减少一个空格, 例如shell编程中的[ ! -f /home/1.txt ] 这个表达式是用来判断如果存在表示成功0, 然后取反,即表达式的值为1,’[‘、‘]’左右必须空格,否则会报错!(RHEL5中亲测)
那么现在来说一下RHEL中如何获取精确到毫秒的时间 两个函数localtime和gettimeofday ;两个结构体,struct tm . struct timezone ,详情请查阅UNIX环境高级编程或者是man手册
以下是代码:
[cpp]
#include <stdio.h>
#include <stdlib.h>
#include <systime.h>
int main()
{
char timestamped[30] = {0};
struct tm* timeptr;
struct timezone mtm;
gettimeofday(&mtm);
timeptr = localtime(&mtm.tv_sec);
sprintf(timestamped, "time is%2d:%2d:%2d:%2d%2d%d",
timeptr->tm_year, timeptr->tm_mon, timeptr->tm_mday,
timeptr->tm_hou, timeptr->tm_min, timeptr->tm_sec, mtm.tv_usec);
printf("%sn", timestamped);
return 1;
}
[/cpp]
注意: Linux下IO库是基于行缓冲的,如果没有n 。printf可能会没有输出,详情查阅UNIX环境高级编程 这下我们就能看到当前精确的时间了,另若需要更精确的时钟可以使用select函数, 它的精确度取决于CPU时钟 ,就这样吧