• C++获取时间戳 秒、微妙、纳秒


    转自:https://blog.csdn.net/CAIYUNFREEDOM/article/details/75388111,https://www.runoob.com/w3cnote/cpp-time_t.html

    1.例子

    #include <iostream>
    #include <sys/time.h>
    #include <cstdlib>
    #include <cstdio>
    #include <ctime>
    #include <cmath>
    #include <unistd.h>
    
    using namespace std;
    time_t clocktime()
    {
    
        time_t t = time(NULL);
        std::cout << " s秒级 ----:";
        std::cout << t << endl;
    
        struct timeval tv;
        gettimeofday(&tv, NULL);
        std::cout << "10e6 微秒级s ----:";
        std::cout << tv.tv_sec << "s," << tv.tv_usec << "微秒" << endl;
    
        struct timespec tn;
    
        cout << "----";
        clock_gettime(CLOCK_REALTIME, &tn);
    
        std::cout << "10e9 纳秒级s ----:";
        std::cout << tn.tv_sec << "s," << tn.tv_nsec << "纳秒" << endl;
    }
    int main()
    {
        clocktime();
        return 0;
    }

     输出:

     s秒级 ----:1665905053
    10e6 微秒级s ----:1665905053s,19892微秒
    ----10e9 纳秒级s ----:1665905053s,19906029纳秒

    2.介绍

    2.1 秒级

     秒级直接time(NULL)获取就行,其中time_t类型,time_t 这种类型就是用来存储从1970年到现在经过了多少秒,看了一下宏定义,

    #define __SLONGWORD_TYPE    long int

    应该就是长整型类型的。

    2.2 微秒级

    struct timeval
    {
        long tv_sec; /**/
        long tv_usec; /*微秒*/
    };

    结构体struct timeval,它精确到微妙。

    https://blog.csdn.net/CV_Jason/article/details/85244813,其中,long int即long,它和int一样,只有32位。在实际的使用中,long与int几乎没有区别。long long则不同,long long是C++的64位整型的基本类型。long 和int只是因为早期C编译器格式的问题。

    int gettimeofday(struct timeval *tv, struct timezone *tz);

    返回当前距离1970年的秒数和微妙数,后面的tz是时区,一般不用。

    2.3 纳秒

    https://www.cnblogs.com/book-gary/p/3716790.html

    struct timespec
      {
        __time_t tv_sec;        /* Seconds.  */
        __syscall_slong_t tv_nsec;    /* Nanoseconds.  */
      };

    一般由函数int clock_gettime(clockid_t, struct timespec *)获取特定时钟的时间,CLOCK_REALTIME 统当前时间,从1970年1.1日算起。

    3.时间戳转日期

    https://www.jianshu.com/p/f50324284592

    struct tm stime;
    time_t now = time(0);
    localtime_r(&now, &stime);
    
    char tmp[32] = { NULL };
    strftime(tmp, sizeof(tmp), "%Y-%m-%d_%H:%M:%S", &stime);
    string date(tmp);

      

  • 相关阅读:
    linux环境weblogic开启远程调试
    C#相关资料
    pyqt5,pyside2学习过程中问题与疑惑记录--先记下问题,然后逐个解决
    任务记录-2020.10.1
    猜想:假如时间的快慢与物体的质量有关系。那长大之后,感觉时间过得越来越快,是不是大脑或者身体中某一个器官越长越大,然后导致时间越过越快。。。
    学习思路--学习一个新的东西,从哪些方面着手
    java bug记录
    记录要做的事情,把sql字符串替换写成工具网页。
    使用java代码本地测试远程rpc接口
    任务记录
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/16796317.html
Copyright © 2020-2023  润新知