/**************命令行下的系统时间设置******************/
SylixOS中的时钟分为系统时钟和硬件时钟,在其对应的shell命令也是两个不同的命令date和hwclock。
Sylixos设备的控制台中输入help date命令,会得到该命令的使用方法
[root@sylixos_station:/apps]# help dateset system current time.eg. date -s 23:28:25 date -s 20110217date [-s {time | date}]
使用help hwclock也可以得到hwclock的使用方法。
我们先对系统时间进行设置,首先使用date命令查看当前的系统时间
[root@sylixos_station:/]# dateSat Jun 27 11:50:39 2015 /* 可以看到当前的系统时间 */
我们将时间更改下,这么分开设置了时间和日期
[root@sylixos_station:/]# date -s 22:02:12Sat Jun 27 22:02:12 2015[root@sylixos_station:/]# date -s 20120222Wed Feb 22 22:02:21 2012
可以看到当前时间是2012年2月22号22点02分21秒,此时使用hwclock查看rtc时间,
[root@sylixos_station:/]# hwclock --showSun Jun 07 11:57:29 2015 /* 时间仍然是设置前的时间,与系统时间并不一致*/
再执行同步命令,会发现当前硬件时间与系统时间保持了一致。
[root@sylixos_station:/]# hwclock --systohc[root@sylixos_station:/]# hwclock --showThu Feb 02 22:05:36 2012
/**************程序中的系统时间设置******************/
对系统时间的操作使用POSIX的函数clock_gettime和clock_settime就可以进行设置,这里给出一个简单的实例,首先读取当前时间,随后将系统时间增加一天,并写入硬件时钟。
以下是代码片段:
void setting_time(void){ struct timespec stime; if( clock_gettime( CLOCK_REALTIME, &stime) == -1 ) { perror( "getclock" ); } /* * 增加一天 */ stime.tv_sec += (60*60)*24L; stime.tv_nsec = 0; if( clock_settime( CLOCK_REALTIME, &stime) == -1 ) { perror( "setclock" ); } /* *将系统时间同步到rtc上。 */ sysToRtc();}