素槿
Published on 2025-08-22 / 3 Visits
0

C语言获取格式化时间

原理

就是使用 localtime函数,返回的是1970-01-01 00:00:00至今所经过的时间。

获取现在的时间只需在年份上加上1970即可。

代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <cstdint>
#include <time.h>
#include <sys/time.h>

struct time_stamp_t {
    uint16_t ts_year;
    uint8_t  ts_mon;
    uint8_t  ts_day;
    uint8_t  ts_hour;
    uint8_t  ts_min;
    uint8_t  ts_sec;
} __attribute__((packed));

//获取格式化时间
int get_time(struct time_stamp_t* ts)
{
    time_t     now;
    struct tm* tm_now = NULL;

    time(&now);
    tm_now = localtime(&now);
    if (NULL == tm_now || NULL == ts) return 1;

    ts->ts_year = tm_now->tm_year + 1900;
    ts->ts_mon  = tm_now->tm_mon + 1;
    ts->ts_day  = tm_now->tm_mday;
    ts->ts_hour = tm_now->tm_hour;
    ts->ts_min  = tm_now->tm_min;
    ts->ts_sec  = tm_now->tm_sec;

    return 0;
}

int main(int argc, char* argv[])
{
    struct time_stamp_t ts;
    get_time(&ts);
    printf("time:%d-%d-%d %d:%d:%d\n", ts.ts_year, ts.ts_mon, ts.ts_day,
           ts.ts_hour, ts.ts_min, ts.ts_sec);

    return 0;
}

输出

$ g++ main.cc 
$ ./a.out 
time:2021-10-11 19:38:18