当前位置:首页 >> 内饰

的实现机

2021-08-24 18:03:41  菏泽汽车网

前几天我们要开发一个时间(时区)设置的应用程序,所以花了一点时间去看config-date的实现,这里简单说一下config-date的工作机制和我们面临的一些问题。

被处以行政拘留的情形也比较多 1. 让时间生效分为两步,这是在里实现的。首先调用date命令设置系统时间,然后调用hwclock命令把时间写到BIOS中。

2. 设置时区也分为两步,这是在里实现的。首先把时区数据文件(/usr/share/zoneinfo/时区)拷贝到文件/etc/localtime,然后把时区信息写入到文件/etc/sysconfig/clock。中间还有一步是把时区数据文件拷贝到文件/var/spool/postfix/etc/localtime,这一步是可选的,取决于该文件是否存在,一般系统上/var/spool/postfix/etc/localtime都不存在,具体用途不清楚。

3. 时区列表数据是从文件/usr/share/zoneinfo/b中读取的。该文件记录了主要城市的时区信息,每一行描述一个城市:城市所在的国家、经/纬度和对应的时区数据文件等等。

4. 从glibc的代码来看,localtime和tzset两个函数只使用了/etc/localtime文件,该文件是一个二进制文件,结构有点复杂,没看得太明白。

我们遇到两个问题:

1. /usr/share/zoneinfo/b文件太大,有400多行,上屏幕比较小,用户很难找到想要的时区。解决办法:对它进行裁减,主要保留主要城市。

2. /usr/share/zoneinfo/b里记录的是城市精确的经/纬度,通过该经/纬度计算出来的偏移时间是小数,这倒不是大问题,取整就行了。问题是像上海和重庆这两个城市,我们希望得到同样8小时的时间偏移,这不可能根据经/纬度计算。时区数据文件中是有相关信息的,因为localtime这样的函数都可以正常工作。但是该文件的结构有点复杂,没搞明白。解决办法:自己定义了一张表记录这些信息,或者在选择时区时,时间不做同步更新。

不知大家遇到过同样的问题没有,是否有更好的办法呢?

晋城治疗白斑病费用
昆明专治白癜风医院
济南去哪里看白癜风
友情链接
6