什麼是unix時代?unix時代是什麼時候?

Unix時間是計算機用來測量時間的系統。但是Unix時間是如何工作的呢?什麼是“Unix時代”...

為什麼Unix有自己的時間概念?什麼是時代?2038年的問題是什麼?

A photograph of an hourglass showing sand trickling through a tiny hole from one glass bowl into another below it

Unix時間是一種表示特定日期和時間的方法,用於Linux、macOS和許多其他可互作業系統。它是如此廣泛,以至於你可能在不知不覺中使用它。不過,一旦您瞭解了Unix時間,您將在許多上下文中發現它。有幾種工具可以幫助您使用Unix時間。

什麼是unix時代的目的(the purpose of unix time)?

Unix時間是自固定時間和日期以來的總秒數。它是一種日期/時間(或時間戳)格式,看起來與我們習慣的可讀日期和時間不同。這純粹是為了提高效率。儲存一個表示秒的數字比儲存年、月、小時等的單獨值所需的空間要小得多。

當然,從現代的角度來看,空間差異根本不是那麼大。但是,考慮到Unix起源於20世紀60年代後期,當時可用儲存空間要小得多。時間戳也被大量使用,所以它們的儲存會增加。例如,每個檔案都有三個與之關聯的時間戳。

除非你是一個數學天才,否則這種格式在你的腦海裡幾乎是不可能翻譯的。但與更可讀的替代方案(如Wed,2015年10月21日07:28:00 GMT)相比,它仍有一些優勢。您可以非常輕鬆地訂購兩個Unix時間戳,一目瞭然。計算兩個時間戳之間的差異通常也會更快。這一點在日期相近的情況下尤其如此,例如在相鄰的日子。

A screenshot from the Epoch Converter site showing Unix Time

關於這個時代

因此,Unix時間是自特定時間點起的總秒數。但那個時間點是什麼?現在是1970年1月1日00:00:00 UTC。這通常被稱為Unix時代。程式設計師出於方便而選擇這個日期作為紀元,因為這是他們發明Unix時間時最接近的一個日期。

你很可能已經看到了這一天出了問題。這顯然是一個錯誤,但一個看起來非常奇怪,當它導致一個日期之前,我們許多人出生!不過,當您瞭解Unix時間時,這是完全可以理解的。如果任何系統試圖顯示一個沒有任何值的時間戳,它通常會轉換為0,併產生準確的歷元日期。

unix時間資料格式

嚴格說來,沒有一個。原始資料型別是32位整數,即使在功能更強大的系統中,這種情況也常常是如此。

此資料型別允許值總共儲存2^32秒,這剛好超過136年。這個值通常是有符號的,這意味著它可以是負數或正數。所以,它通常代表紀元兩邊的68年,即1902-2038年。

當然,這仍然是一個有限的時期。但是時間戳格式的主要用途是檔案修改等概念。我們非常需要表現的是接近現在的時間,而不是遠古的歷史或遙遠的未來。即使對於日曆之類的應用程式,也很少需要表示未來幾十年以後的日期。

但這並不意味著這個有限的時間跨度是沒有問題的…

2038年問題

千年蟲(歷史上最嚴重的程式設計錯誤之一)影響了以兩位數儲存年份的計算機系統。當2000年到來的時候,這些系統把它當作1900年。在這次事件中,這並不像人們所擔心的那樣是災難性的,主要是因為許多人事先花了大量的時間和精力,為它做準備。

如果您在上一節中注意到了這一點,您可能已經發現了一個可能影響Unix時間的類似問題。好吧,Unix時代確實有自己的資料問題:Y2k38問題。(這通常被稱為一個問題,而不是一個bug;也許我們從2000年開始變得更加樂觀了!)當Unix時間在2038年結束時,系統將把新的日期視為1902年或1970年。或者他們可能會徹底失敗。

至少這個問題不會在除夕夜的午夜敲響時影響到我們。32位Unix時間的最後一秒將在3月19日。最終,我們很可能會在2038年之前升級大多數系統,否則到那時它們將被淘汰。

一些有用的時間戳資源

Epoch轉換器站點可能是可用的最全面的時間戳轉換器。它首先實時顯示當前的Unix時間,並在此基礎上添加了幾乎所有可以想象的特性。它的主要用途是在時間戳和人類可讀的日期之間進行雙向轉換。

Dan的工具是一個巨大的有用的web應用程式集合,其中一個是時間戳轉換器。它更基本,但有一個非常乾淨的演示,並且易於使用。

時間呈現另一種,甚至更簡約的外觀。它以多種格式顯示時間,包括Unix時間。它在其頁面標題中包含當前時間,這是有用的。

A screenshot of the Time.is websites showing Unix Time

使用unix時間和命令列工具

在Linux和macOS上,date程式是處理日期/時間(包括Unix時間戳)的核心實用程式。呼叫時不帶任何引數,它以可讀格式返回當前日期/時間:

$ dateWed Feb 10 12:28:30 GMT 2021

如果需要Unix時間中的當前日期/時間,請使用+%s引數:

$ date +%s1612960114

如果您的日期版本支援-d標誌,則可以使用-d標誌將可讀日期轉換為時間戳。預設情況下,大多數Linux版本應該:

$ date -d "Jan 2 1970" +%s82800

在macOS上,日期是不同的程式,它需要不同的標誌集:

$ date -j -f "%b %d %Y %T" "Jan 02 1970 00:00:00" "+%s"82800

相反,可以使用-r標誌從Unix時間戳轉換:

$ date -r 1600000000Sun 13 Sep 2020 13:26:40 BST

其他一些程式使用%s格式來處理Unix時間。例如,如果要在Unix時間內顯示檔案的修改日期,對於Linux版本的ls,可以使用以下命令:

$ ls -l --time-style=+%s index.tmp.html-rw-r--r-- 1 ubuntu ubuntu 17862 1521649818 index.tmp.html

如何在程式語言中使用unix時間

PHP具有time()函式,它返回當前Unix時間戳。函式的date()函式將時間戳作為其第二個引數:

$ php -r 'echo date("Y-m-d", time());'2021-02-11

JavaScript以一種有趣的方式處理事情。它有一個日期:現在()方法以獲取自Unix紀元以來的毫秒數。當然,您可以將其除以1000,然後對結果進行四捨五入,得到以秒為單位的等效Unix時間:

> Math.floor(Date.now() / 1000)1613083012

瞭解unix時間

Unix時間是一個在許多地方出現的簡單概念。一旦你理解了它,你可能會發現它非常有用,例如在計算時差時。您還可以識別它何時可能是某些錯誤的原因。

epoch和時間戳等概念是Linux入門的重要部分。要了解有關ls之類的基本功能的更多資訊,請檢視我們的基本Linux命令指南。

  • 發表於 2021-03-26 15:47
  • 閱讀 ( 44 )
  • 分類:電腦

你可能感興趣的文章

中世紀(middle ages)和黑暗時代(dark ages)的區別

  作為歷史時期,中世紀和黑暗時代有什麼區別?然而,在討論這兩個時期之間的差異之前,讓我們看看這兩個時期是什麼。在世界各地區,歷史被分為不同的時期或時代。大多數時候,它與地區或國家的統治者有關。例如...

  • 發佈於 2020-10-22 21:41
  • 閲讀 ( 53 )

舊石器時代(paleolithic)和中石器時代(mesolithic)的區別

...篇文章讓我們來考察舊石器時代和中石器時代的區別。 什麼是舊石器時代(paleolithic)? 舊石器時代也被稱為舊石器時代。支援這一時期人類生命存在的證據最早是在非洲發現的。正是在這個時代,人類完全進化為現代智人。在這...

  • 發佈於 2020-10-29 07:12
  • 閲讀 ( 40 )

新石器時代(neolithic)和舊石器時代(paleolithic age)的區別

...也有一些明顯的差異,這些差異將在他的文章中討論。 什麼是新石器時代(neolithic age)? 新石器時代是一個很短的時期,據信開始於公元前10200年左右,結束於公元前4500年至公元前2500年。也被稱為新石器時代,這是一個人類學習...

  • 發佈於 2020-11-03 09:33
  • 閲讀 ( 47 )

黑暗時代(dark ages)和中世紀(medieval ages)的區別

...間,這是羅馬帝國滅亡和中世紀鼎盛時期之間的時期。 什麼是中世紀(medieval ages)? 中世紀是歐洲歷史上從5世紀到15世紀(公元476年到1600年)的時期。查理大帝建立的帝國在他的死後沒有幸存下來。其主要領土,即東弗朗西婭和...

  • 發佈於 2020-11-04 10:39
  • 閲讀 ( 58 )

用posix訊號對mac應用程式進行老式故障排除

...祕的選單選項,用於向程序傳送訊號。你有沒有想過那是什麼?如果您選擇它,您將看到像SIGINT和SIGHUP這樣的模糊術語,這並不完全清楚。那麼這些訊號到底是什麼呢? ...

  • 發佈於 2021-03-16 15:08
  • 閲讀 ( 42 )

Mac電腦比windows更不容易受到惡意軟體攻擊的5個原因

...為,Mac電腦不像Windows PC那樣容易受到病毒的影響。但為什麼這是,確切地說? ...

  • 發佈於 2021-03-18 19:05
  • 閲讀 ( 67 )

unix與linux的區別及其重要性

... 什麼是unix系統(unix)? ...

  • 發佈於 2021-03-19 10:38
  • 閲讀 ( 41 )

解釋了chmod命令和linux檔案許可權

... 什麼是奇莫德(chmod)? ...

  • 發佈於 2021-03-25 12:15
  • 閲讀 ( 50 )

windows與linux的真實市場份額比較

世界上最常用的作業系統是什麼?簡單的問題,對吧?顯然是窗戶。 ...

  • 發佈於 2021-03-25 13:22
  • 閲讀 ( 52 )

mac os x之前:下一步是什麼?人們為什麼喜歡它?

...為蘋果macOS、iOS等產品的技術基石。讓我們看看NeXTSTEP有什麼特別之處。 NEXSTEP:靈活典雅,堅實基礎 在上世紀90年代來自Windows、macos、OS/2和BeOS的激烈競爭中,NeXTSTEP作業系統脫穎而出。這是因為它優雅地使用了詳細的圖示和排...

  • 發佈於 2021-04-01 09:35
  • 閲讀 ( 50 )
辣椒泡枸杞
辣椒泡枸杞

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦