- 时间戳
时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数。它也被称为 Unix 时间戳(Unix Timestamp)。
Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。
Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广泛采用。
- 获取当前时间戳 time()
time() 是指返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数的函数。
部分代码
time_t tt;
time(&tt);
结果
- 将时间戳转换为struct tm 结构体
先看看你struct tm 的定义
struct tm {
int tm_sec; /* seconds after the minute - [0,59] */
int tm_min; /* minutes after the hour - [0,59] */
int tm_hour; /* hours since midnight - [0,23] */
int tm_mday; /* day of the month - [1,31] */
int tm_mon; /* months since January - [0,11] */
int tm_year; /* years since 1900 */
int tm_wday; /* days since Sunday - [0,6] */
int tm_yday; /* days since January 1 - [0,365] */
int tm_isdst; /* daylight savings time flag */
};
我们可以调用localtime(),gmtime()这两个函数转换
localtime是 把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为本地时间,而gmtime函数转换后的时间没有经过时区变换,是UTC时间 。
gmtime是把日期和时间转换为格林威治(GMT)时间的函数。将参数time 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。
- 将struct tm 结构体转换为时间戳 mktime()
mktime()这个函数主要是将struct tm 结构体转换为时间戳,但是需要注意的是,这个函数转换的是localtime得到的时间戳,如果是gmtime的时间戳,计算的时间会差所在地的时区。比如,按照北京时间来看的话,计算出来的是上午8点,实际是下午4点。差8个小时,因为北京是东8区。
- 将时间戳转换为字符串ctime()
表示的时间是基于格林威治标准时间(GMT)的。
- 将struct tm 转换为字符串
1) 调用函数asctime。
2)调用函数sprintf()自由的拼接。
sprintf_s(szDateTime, "%04d/%02d/%02d %02d:%02d:%02d",t->tm_year + 1900,t->tm_mon + 1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec);
网友评论