2013-07-18 231 views
3

爲什麼7/18/2013 11:33在GMT時區,並在我的本地時區(亞洲/加爾各答)有什麼不同? 由於Unix時間戳是從紀元時間開始計算的刻度1/1/1970 00:00:00 GMT因此我知道在不同時區不同時間段出現了紀元時間,但仍然存在。例如,如果我(+5:30 GMT)和我的朋友(+5:00 GMT)從00:00分別開始計數蜱,那麼在18:00 Hrs在兩個時區中的蜱數應該相同。那麼爲什麼同樣的事情在Unix時間戳上不是這樣。爲什麼Unix的時間戳同一時間在不同的時區不同

需要充分理解這個概念。

回答

9

例如,如果我(+5:30 GMT)和我的朋友(+5:00 GMT)分別從00:00小時開始計算滴答時間,那麼在18:00兩個時區滴答時間相同。

沒有,因爲兩人都開始從00:00 UTC 計數。這就是定義。所以對於你來說,這意味着自18:30以來的蜱蟲數量,對於你的朋友來說,這意味着自19:00以來的蜱蟲數量。

的想法是,在單個時間瞬間具有相同的時間戳值隨處可見。因此,如果我現在打電話給你(並且忽略了電話延遲),我們都可以同意「now」是一個Unix時間戳1374130418.你可能對我有不同的本地時間,但我們可以用通用格式表示「now」。

見野田佳彥時間用戶指南的"core concepts"一部分的本地時間與「全球」時間進行更多的討論。

+0

大風扇爵士: ),但是,先生,約定爲什麼計時器不是從我的00:00開始,而是他的00:00開始。這樣,我們兩個在世界的同一時間都有相同的時間標記,因爲Unix時間標記僅僅是經過的秒數。它的主要區別是什麼?你能解釋一下嗎? –

+1

@DinkarThakur:因爲這會給世界各地帶來*不同的時間戳。問題是,在一個*即時*時間內,格林尼治標準時間爲00:00,18:30爲您,您的朋友爲19:00。 *即時*時間有一個時間戳。 –

+0

謝謝:)完全清除:) –

0

當您的系統配置正確,Unix的時間戳顯示了自格林威治1.1.1970蜱。因此,當你的朋友在當地時間18:00讀取時間戳時,延遲時間爲30分鐘,因此有1800秒的差異。

如果不是這種情況下,一個或兩個系統時鐘設置不正確使用GMT作爲鹼。通常,這種問題不會產生負面影響,只要您只是在一個系統上工作,或者所有系統的設置都不正確。

+3

實際上在格林威治它將在Unix時代顯示01:00,因爲英國在整個1970年GMT + 1。只是增加了一點混淆:( –

0

Unix的時間給出seconds since the epoch:自00:00:00協調世界時(UTC),或星期四,1970年1月1日已經過去了秒(不包括閏秒)的數量,

GNU date命令有一些非常好的功能,可以讓你在不同的時間格式之間進行轉換。這些在man date解釋非常漂亮,所以我只會給你這裏一些例子:

### "Normal" format 
$ date 
Thu Jun 12 11:44:23 CEST 2014 
### Unix time 
$ date +%s 
1402566271 

要轉換,你可以給date使用-d標誌的具體日期。但是,要得到一個Unix日期,這需要是一個完整的日期。由於Unix時間指的是整個日期(年,月,日,時間),因此您不能將3:00 PM轉換爲Unix時間。因此,舉例來說,要獲得Unix的日期爲1987年9月12日,你會怎麼做:

$ date -d "3 PM 12 September 1987" +%s 
558450000 

而將其轉換回「正常」的日期:

$ date -d "@558450000" 
Sat Sep 12 15:00:00 CEST 1987 
相關問題