如果系统时间更改为节省日照时间,则会更改gettimeofday()的输出吗?
发布于 2010-08-04 10:18:19
请注意,Unix系统不会用夏时制“更改系统时间”--所有这些都是在程序想要打印当前时间时处理的,通常使用localtime(3)。
即使地方政府决定改变我们墙上的时钟,自那个时代以来的秒数也是单调的。
发布于 2012-02-25 18:27:11
UNIX/linux计算机使用的UNIX时间或多或少是UTC,即格林威治伦敦。只有在打印或显示时间时,才会将时间转换为本地时间。这是通过查阅时区设置来完成的。
在linux上,时区数据库位于/usr/share/zoneinfo中,当前时区在/etc/localtime中定义。此文件处理夏时制,因此您打印时的转换将被干净地处理。请注意,时区的定义通常是出于地理和政治原因。
随着不同政府和/或地方议会决定更改时区或夏令时设置,您的时区数据库将定期更新。最近,萨摩亚在2011年底整整错过了一天。如果预先更新了任何本地萨摩亚UNIX/Linux计算机上的时区文件,那么就不会遇到任何问题。
其他考虑因素是NTP时间同步和闰秒。如果您运行一个NTP客户端以保持计算机同步,那么这个“关闭”内部计算机时钟的方法要么加快它的速度,要么减慢它的速度--请注意,使用“日期”或“rdate”命令手动设置时间通常是个坏主意,因为这可能会导致时间的跳跃,并可能影响使用某种超时的软件。(最近的一个例子是我不得不维护的一个星号PABX )。
如果要手动更改时间,请使用ntpdate命令并定义上游NTP服务器。
https://stackoverflow.com/questions/3404395
复制相似问题