#define PRINT(fmt, ...) printf("%s "fmt, get_cur_time(), ##__VA_ARGS__)
#define ERROR(fmt, ...) printf("%s "fmt" :%s\n", get_cur_time(), ##__VA_ARGS__, strerror(errno))
char *get_cur_time()
static char s[20];
time_t t;
struct tm* ltime;
time(&t);
ltime = localtime(&t);
strftime(s, 20, "%Y-%m-%d %H:%M:%S", ltime);
return s;
gettimeofday(&tv, NULL);
// printf(“second:%ld\n”,tv.tv_sec); //秒
// printf(“millisecond:%ld\n”,tv.tv_sec1000 + tv.tv_usec/1000); //毫秒
// printf(“microsecond:%ld\n”,tv.tv_s
写C程序的时候,printf输出调试信息是常态,printf输出调试信息时如果能自动带源码信息(__FILE__,__FUNCTION__, __LINE__),显然更方便查找问题,如果能再加上时间戳就更完美了。
如果到处都用printf("%s:%s:%d, %s\n",__FILE__,__FUNCTION__, __LINE__,"hello")写起来也太麻烦了;而且有的时候还需要向内存缓冲区打印输出。而且__FILE__提供的是源码的全路径名,打印实可能会很长。
所以这种直接在代码写printf("
do_gettimeofday kernel space API
gettimeofday user space API
driver中的printf用了do_gettimeofday(*timeval)
printf(%ld)
time(&timep);
char tmp[64];
strftime(tmp, sizeof(tmp), "%Y-%m-%d %H:%M:%S", localtime(&timep));
cout << "
自 1970 年 1 月 1 日以来经过的秒数:time_t time1 = time(0);//这里获取到的其实就是一个long类型的时间戳,是秒级别的,非毫秒级别 time_t time1 = time(0);
cout << "time1 = " << time1 << endl;//1498122787
char * strTime...
最近在学习用esp-idf给ESP32写代码。打算写一个NTP授时功能的时候发现要自己解析时间戳。在网上搜了一下,发现大佬们都是按照每四年一闰年的方法来判断是否是闰年。但是这个方法并不准确。
四年一闰,百年不闰,四百年再闰。例如:2000年是闰年,2100年则是平年。——摘自百度百科
考虑到这个问题,所以自己重新写了一个算法(就是不知道有没有大佬也写个这个算法hhh),通过循环来判断是否为闰年。虽然在速度上稍微慢一点但至少会更严谨一些。
#include <stdio.h>
#inclu
在C语言中,获取当前时间戳通常使用`time()`函数和`struct tm`结构。`time()`函数返回自1970年1月1日(UTC/GMT)午夜(00:00:00)以来的秒数,而`localtime()`或`gmtime()`函数可以根据需要将其转换为本地时间和UTC时间。
以下是一个简单的示例,展示了如何获取当前时间戳(以秒为单位):
#include <time.h>
// 获取当前时间戳
time_t timestamp;
time(×tamp);
printf("当前时间戳(秒): %ld\n", timestamp);
如果你想获取更精确的时间,例如微秒,你可以使用`clock_gettime()`函数配合`CLOCK_MONOTONIC`标志,或者`gettimeofday()`函数。