#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 &lt;&lt; "time1 = " &lt;&lt; time1 &lt;&lt; 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(&timestamp); printf("当前时间戳(秒): %ld\n", timestamp); 如果你想获取更精确的时间,例如微秒,你可以使用`clock_gettime()`函数配合`CLOCK_MONOTONIC`标志,或者`gettimeofday()`函数。