Linux系统下date函数的用法

Linux系统下date函数的用法,第1张

我们在Linux系统中使用 date --help 可打印出如下信息:

默认情况下,日期的数字区域以0 填充,以下可选标记可以跟在"%"后:

在任何标记之后还允许一个可选的域宽度指定,它是一个十进制数字。

作为一个可选的修饰声明,它可以是E,在可能的情况下使用本地环境关联的

表示方式;或者是O,在可能的情况下使用本地环境关联的数字符号。

date是Linux系统里自带的一个系统命令,用来显示当前的系统时间,不过默认显示的结果里包括很多信息,特别是做为文件名输出时,不是很方便,好在date命令里包含格式化输出的选项。

我们一般使用 date -s 命令来修改系统时间

比如将系统时间设定成2011年7月13日的命令:date -s 07/13/2011

将系统时间设定成11点12分0秒的命令:date -s 11:12:00

注意:这里说的是系统时间,是linux由 *** 作系统维护的。

在系统启动时,Linux *** 作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行 date -s 后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。如果要确保修改生效可以执行 clock –w 命令,强制把系统时间写入CMOS。

struct tm { int tm_sec /* Seconds (0-60) */ int tm_min /* Minutes (0-59) */ int tm_hour /* Hours (0-23) */ int tm_mday /* Day of the month (1-31) */ int tm_mon /* Month (0-11) */ int tm_year /* Year - 1900 */ int tm_wday /* Day of the week (0-6, Sunday = 0) */ int tm_yday /* Day in the year (0-365, 1 Jan = 0) */ int tm_isdst /* Daylight saving time */ }

这就里面的参数已经很详尽也很简单了

所以不需要你再去做其它的事情,只要填充这个结构就可以了

当然如果你非要用以上概述的方法来完成任务的其实也很简单

只需要将以上的内容填充到这个结构体然后再调用mktime函数就可以了

下面我给个简单的实现可以参考下,然后根据自己的实际情况再做些修改

void settime(unsigned char *buf,int buf_len){struct tm t int year=0memset(&t,0,sizeof(t)) memcpy(&year,buf,2)//前两个字节为年份year-=1900//struct sm结构中年份是以1900年开始计算的 t.tm_year=year t.tm_mon=(int)buf[2]-1 t.tm_mday=(int)buf[3] t.tm_hour=(int)buf[4] t.tm_min=(int)buf[5] t.tm_sec=(int)buf[6]if(mktime(&t) == -1) //设置时间perror("mktime")}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8180714.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存