win&liunx下C语言获取时间戳方法(秒级,毫秒级)

        最近呢,项目需要获取时间戳,作为数据包中的内容。因此才有了此篇。

        我们通常所用的时间戳呢,是Unix时间戳。Unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

有个实用的时间戳获取工具:

Unix时间戳(Unix timestamp)转换工具 - 站长工具Unix时间戳转换可以把Unix时间转成北京时间。https://tool.chinaz.com/Tools/unixtime.aspx


        本篇教程呢,就是在window和liunx下要用C语言实现时间戳的获取,以最简单的方法。

Windows

#include 
#include 

int main()
{
    time_t tt;
    struct tm *st;
    time(&tt);
    printf("%ld\n", tt);

    return 0;
}

本段代码实现了秒级时间戳,但是笔者发现,Windows下要获取毫秒并不简单。

对于毫秒时间戳,实际上也就是秒级时间戳后面加三位数(毫秒数)。因此,只要获取到当前时间的毫秒数就行了。

于是乎就是想办法获取毫秒数了。

#include 
#include 
#include 

int main()
{
    SYSTEMTIME t1;
    GetSystemTime(&t1);
    printf("%ld\n", (int)t1.wMilliseconds);

    return 0;
}

本段代码实现了对毫秒数的获取。

因此将以上代码进行一个整合,即可获取到毫秒级时间戳:

#include 
#include 
#include 

int main()
{
    time_t tt;
    struct tm *st;
    time(&tt);
    printf("%ld", tt);

    SYSTEMTIME t1;
    GetSystemTime(&t1);
    printf("%ld\n", (int)t1.wMilliseconds);

    return 0;
}

LIUNX

#include 
#include 
#include 

int main()
{
    struct timeval tv;
    gettimeofday(&tv, NULL);
    
    printf("second: %ld\n", tv.tv_sec); // 秒
    printf("millisecond: %ld\n", tv.tv_sec * 1000 + tv.tv_usec / 1000); // 毫秒

    return 0;
}

简评

        怎么看liunx都要简单很多,可能这是windows的某点缺陷吧。

        既然要传输数据,那么接下来只需要将这些整形数据转变为字符串数据就行了,这部分就留给同学们自行发挥咯。

你可能感兴趣的:(Jetson,nano,入坑锦集,c语言,c++,ubuntu,linux,win)