前面说到是去同步时区的接口,
从同步的角度来讲,如何获取被设置后的时区,还有一个接口即gettimeofday,
这个接口不仅可以获取时区,posix标准似乎还很好心的在第二个参数中放置了可以用来获取时区和夏冬令时的tz参数,用于返回这两个值。
事情真的有这么简单吗?
墨菲定律又一次出现了,tz这个参数已经被废弃掉了,手册中已经明确说明了glibc不支持这个参数。那么实际使用这个接口,真的可以获取到吗?
写程序验证过后,发现这个接口虽然手册中已明确说不支持,但是实际上仍然是可以获取到得。
但是依赖于这个参数来获取时区,如果程序写完了到各个平台和版本上使用。
你确定晚上睡觉时想起来不会一身冷汗?所以时区的获取到这里已经没法继续了。
二、设置时区
那我们再来看看和这个函数对应的设置时区的接口,那就是settimeofday。这个接口可以对时间进行设置,但是有一点需要注意,你必须是有root权限才行,否则调用失败那是必须的。
该接口中有tz的参数,可以对时区和夏冬令时进行设置,但是同理tz这个参数已经被废弃掉了,又是一个鸡肋。
之前尝试过准备用这个接口来进行时间,设置系统时间吧,时区就别想了。
查过settimeofday,这是系统调用,tzset则是gilibc提供的实现。
不讲同步了,那么单纯的讨论下时区怎么设置吧,
如果不是编程而是单纯在Linux下设置时区,可以用下面的前两种,后面第三种比较通用哈
1)可以使用tzselect命令