linux下获取系统时间的方法时间:2009-11-1113:45:04来源:Linux联盟作者:可以用localtime函数分别获取年月日时分秒的数值。Linux下获得系统时间的C语言的实现方法:1.可以用localtime函数分别获取年月日时分秒的数值。#includetime.h//C语言的头文件#includestdio.h//C语言的I/Ovoidmain(){time_tnow;//实例化time_t结构structtm*timenow;//实例化tm结构指针time(&now);//time函数读取现在的时间(国际标准时间非北京时间),然后传值给nowtimenow=localtime(&now);//localtime函数把从time取得的时间now换算成你电脑中的时间(就是你设置的地区)printf(Localtimeis%sn,asctime(timenow));//上句中asctime函数把时间转换成字符,通过printf()函数输出}注释:time_t是一个在time.h中定义好的结构体。而tm结构体的原形如下:structtm{inttm_sec;//seconds0-61inttm_min;//minutes1-59inttm_hour;//hours0-23inttm_mday;//dayofthemonth1-31inttm_mon;//monthssincejan0-11inttm_year;//yearsfrom1900inttm_wday;//dayssinceSunday,0-6inttm_yday;//dayssinceJan1,0-365inttm_isdst;//DaylightSavingtimeindicator};2.对某些需要较高精准度的需求,Linux提供了gettimeofday()。#includestdio.h#includestdlib.h#includesys/time.hintmain(intargc,char**argv){structtimstart,stop,diff;gettimeofday(&start,0);//做你要做的事...gettimeofday(&stop,0);tim_subtract(&diff,&start,&stop);printf(总计用时:%d毫秒n,diff.tv_usec);}inttim_subtract(structtim*result,structtim*x,structtim*y){intnsec;if(x-tv_secy-tv_sec)return-1;if((x-tv_sec==y-tv_sec)&&(x-tv_usecy-tv_usec))return-1;result-tv_sec=(y-tv_sec-x-tv_sec);result-tv_usec=(y-tv_usec-x-tv_usec);if(result-tv_usec0){result-tv_sec--;result-tv_usec+=1000000;}return0;}我们一般使用“date-s”命令来修改系统时间。比如将系统时间设定成2005年7月26日的命令如下。#date-s07/26/2005将系统时间设定成下午11点12分0秒的命令如下。#date-s11:12:00注意,这里说的是系统时间,是linux由操作系统维护的。在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date-s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。如果要确保修改生效可以执行如下命令。#clock-w这个命令强制把系统时间写入CMOS。