要做一个服务器之间的同步时间操作。

在linux系统当中,可以使用gettimeofday进行微秒时间的获取,和本机所处时区的处理。然后通过 settimeofday 对另外一个设备进行设定。

但是当需要跟Sunos通讯的时候,遇到问题。

int gettimeofday(struct timeval *tv, struct timezone *tz);

gettimeofday这个函数,虽然在SUN的网站中说明,与linux中的一样,但是实际上, timezone 这个参数是被直接忽略的。

但是,可以使用ftime来进行时区的获取和处理

int ftime(struct timeb *tp);

在 timeb 的结构如下:

                 struct timeb {
                      time_t   time;
                      unsigned short millitm;
                      short    timezone;
                      short    dstflag;
                 };

其中的成员,timezone 与 ”struct timezone“结构中的 tz_minuteswest 的含义是一样的。

这样就可能通过本机的时区设定,将获取的时间转换为 UTC 的标准时间传送,在到达后在进行时区转换。


Logo

更多推荐