/**************命令行下的系统时间设置******************/
SylixOS中的时钟分为系统时钟和硬件时钟,在其对应的shell命令也是两个不同的命令date和hwclock。
Sylixos设备的控制台中输入help date命令,会得到该命令的使用方法
[root@sylixos_station:/apps]# help date
set system current time.
eg. date -s 23:28:25
date -s 20110217
date [-s {time | date}]
使用help hwclock也可以得到hwclock的使用方法。
我们先对系统时间进行设置,首先使用date命令查看当前的系统时间
[root@sylixos_station:/]# date
Sat Jun 27 11:50:39 2015 /* 可以看到当前的系统时间 */
我们将时间更改下,这么分开设置了时间和日期
[root@sylixos_station:/]# date -s 22:02:12
Sat Jun 27 22:02:12 2015
[root@sylixos_station:/]# date -s 20120222
Wed Feb 22 22:02:21 2012
可以看到当前时间是2012年2月22号22点02分21秒,此时使用hwclock查看rtc时间,
[root@sylixos_station:/]# hwclock --show
Sun Jun 07 11:57:29 2015 /* 时间仍然是设置前的时间,与系统时间并不一致*/
再执行同步命令,会发现当前硬件时间与系统时间保持了一致。
[root@sylixos_station:/]# hwclock --systohc
[root@sylixos_station:/]# hwclock --show
Thu 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();
}