2010-08-04 22 views

回答

1

需要注意的是Unix系統不符合夏令時「更改系統時間」 - 這是所有處理程序時要打印的當前時間,一般使用localtime(3)

即使當地政府決定改變我們的牆上的時鐘,時代以來的秒數仍然保持單調。

+0

謝謝。這是否意味着如果我在程序運行時更改系統時間,定期調用gettimeofday()以執行一些簿記/邏輯處理等的程序不會受到影響? – weima 2010-08-04 10:28:18

+0

它應該沒問題;)但我不得不承認我從來沒有想過檢查時間切換時間。呵呵。 – sarnold 2010-08-04 10:44:14

0

UNIX/linux計算機使用的UNIX時間或多或少是UTC,即格林威治倫敦。只有當您打印或顯示時間時,纔會將其轉換爲本地時間。這是通過諮詢TIMEZONE設置完成的。

在linux上,時區數據庫位於/ usr/share/zoneinfo中 - 當前時區在/ etc/localtime中定義。該文件處理夏令時,因此打印時的轉換處理乾淨。請注意,時區通常是出於地理和政治原因而定義的。

您的時區數據庫將定期更新,因爲各個政府和/或地方議會決定更改他們的時區或夏時制時間設置。最近,薩摩亞在2011年底跳了一整天。如果提前在任何本地Samoan UNIX/Linux計算機上的TIMEZONE文件進行了更新,那麼就不會遇到任何問題。

其他考慮因素是NTP時間同步和閏秒。如果您運行NTP客戶端以保持計算機同步,那麼通過加速或減慢內部計算機時鐘可以「擺脫」內部計算機時鐘 - 請注意,通常這是一個不好的想法,可以使用'date '或'rdate'命令,因爲這會導致時間上的跳躍,並且可能會影響使用某種超時的軟件。 (最近的一個例子是我必須維護的Asterisk PABX)。

如果您要手動更改時間,請使用ntpdate命令並定義上游NTP服務器。

相關問題