长春网站优化指导,深圳中装建设集团,镇江网站关键字优化如何,贵州软件定制一#xff0c;时间函数1#xff0c;引言在看计算机程序打印的结果的时候#xff0c;往往long long这种整形数据是人往往不想看到的#xff0c;人最想看到的数据类型是结构体类型#xff0c;计算机最想看到的就是整形数据类型等这种机器码#xff0c;所以就有了上面这个图…一时间函数1引言在看计算机程序打印的结果的时候往往long long这种整形数据是人往往不想看到的人最想看到的数据类型是结构体类型计算机最想看到的就是整形数据类型等这种机器码所以就有了上面这个图的相互转换time_t是通过time()函数将内核的时间信息调用出来使用的一种信息类型time_t在这里通过我们上面的例子可以猜出来这是一个整形的一个数据可以强转为long longstruct tm是通过gmtime()函数和locatime()函数将这个time_t类型的数据转换为结构体类型也就是人最喜欢看的信息mktime就是将结构体转换为time_t类型给内核2time()这个的用法是有两种对应的用法接收time函数传来的信息3gmtime()/locatime()/mktime()1gmtime()/locatime()通过time返回的一个类型然后放到这个里面就可以获得一个结构体tm类型这里就是相较于人喜欢看的一种类型很简洁明了结构体上面的就是对应的信息两者之间的区别就是一个是格林威治的时间一个是当地的时间2mktime()这个是将时间的信息编程tm结构体的类型但是不难看到这里的参数是没有设置const的所以就会有修改的风险gmtime()/locatime()这两个是有const的所以mktime是可能会修改你的结构体的为什么这样设计有什么优点和缺点后续会将4strftime()这个是用一个buffer数组然后规定大小格式就是类似于%d这种然后指向一个tm类型的这个函数会自动帮你把对应的信息切割出来然后放到这个format里面二时间函数实例1实例1在一个文件里面打印时间戳由于这里的变量是这样定义的所以之后的代码不可以直接打印出来需要加值#includestdio.h #includestdlib.h #includetime.h #includeunistd.h #define PATH /home/book/Liunx_system/file_and_user/1.txt #define BUFFSIZE 1024 int main(int argc, char **argv){ FILE *fp NULL; char buff[BUFFSIZE]; int count 0; time_t tmp; struct tm* mytm; fp fopen(PATH, a); if(fp NULL){ perror(fopen()); exit(1); } while((fgets(buff, BUFFSIZE, fp)) ! NULL){ count; } while(1){ time(tmp); mytm localtime(tmp); // strftime(); fprintf(fp, %-4d%d-%d-%d %d:%d:%d\n, count, \ mytm-tm_year1900, mytm-tm_mon1, mytm-tm_mday,\ mytm-tm_hour, mytm-tm_min, mytm-tm_sec); // %-4d左对齐 fflush(fp); // 手动刷新缓冲区,因为只有文件IO为行缓冲,其他的默认为全缓冲 // /n起不到刷新缓冲区的作用了 sleep(1); } fclose(fp); exit(0); }可以使用tail -f 文件 可以实时查看文件的修改2实例2将一个日期加上100天之后的日期是多少#includestdio.h #includestdlib.h #includetime.h #includeunistd.h #define SIZE 1024 int main(int argc, char **argv){ time_t tm_pos; char buff[SIZE]; struct tm *tm_message; time(tm_pos); tm_message localtime(tm_pos); strftime(buff, SIZE, %Y-%m-%d %H:%M:%S, tm_message); printf(Now: %s\n, buff); tm_message-tm_mday 100; // 只能加到mday上不能加到yday上 mktime(tm_message); strftime(buff, SIZE, %Y-%m-%d %H:%M:%S, tm_message); printf(100 days after: %s\n, buff); exit(0); }这里就可以运用到mktime的机制就是mktime之所以形参不加const是因为这个mktime当yearmonthday等有溢出的话他会自动进行进位变成正确的日期。