一、时间戳
时间戳是自 1970 年 1 月 1 日(08:00:00 GMT)至当前时间的总秒数。它也被称为 Unix 时间戳(Unix Timestamp)。
定义为:从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。
Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式。
既然知道了什么时间戳,大家肯定猜到了时间戳是怎么来的,对的,就是调用了time()获取到的。
解析时间戳,若要解成标准的时间戳,则可以借助gmtime_s(),(gmtime()不安全) 。若要解成当地的时间戳,则可以借助localtime_s(),(localtime()不安全) 。
1. Windows平台(win32)
time() : 获取到当前时间,其函数原型在time.h中。
/* Return the current time and put it in *TIMER if TIMER is not NULL. */
extern time_t time (time_t *__timer) __THROW;
从备注了解到 有2中方式可以获取到时间,一种是函数返回值 ,另一种是*__timer指针。
demo代码实现如下:
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
time_t myt=time(NULL);
cout<<"sizeof(time_t) is: "<<sizeof(time_t)<<endl;
cout<<"myt is :"<<myt<<endl;
time_t t;
time(&t);
cout<<"t is:"<<t<<endl;
}
执行结果:
2. Linux平台
demo代码实现如下:
#include <stdio.h>
#include <sys/time.h> //添加头文件
int64_t getCurrentTime() //直接调用这个函数就行了,返回值最好是int64_t,long long应该也可以
{
struct timeval tv;
gettimeofday(&tv,NULL); //该函数在sys/time.h头文件中
return tv.tv_sec * 1000 + tv.tv_usec / 1000;
}
int main()
{
std::cout<<"nowTime: "<<getCurrentTime()<<"\n"; //如果想要到秒级别的,只要除以1000就行了
return 0;
}
编译并执行:
$gcc -lstdc++ l_time_t.cpp