[C/C++时间系列]时间戳与标准时间

一、时间戳

       时间戳是自 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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值