原理
就是使用 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