什麼是 Unix 時間,Unix 時代是什麼時候?

什麼是 Unix 時間,Unix 時代是什麼時候?

為什麼 Unix 有自己的時間概念?什麼是紀元,什麼是 Y2038 問題?

Unix 時間是一種表示特定日期和時間的方法,被 Linux、macOS 和許多其他可互操作的系統使用。它是如此普遍,以至於您可能在不知不覺中使用它。但是,一旦您了解了 Unix 時間,您就會在許多上下文中發現它。有幾個工具可以幫助您使用 Unix 時間。

Unix 時間的目的是什麼?

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

當然,用現代術語來說,空間差異根本不是那麼大。但考慮到 Unix 起源於 1960 年代後期,當時可用存儲空間要小得多。時間戳也被大量使用,因此它們的存儲量加起來。例如,每個文件都有三個與之關聯的時間戳。

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

什麼是 Unix 時間,Unix 時代是什麼時候?

關於時代

因此,Unix 時間是自特定時間點以來的總秒數。但那個時間點是什麼?現在是19701 月 1 日UTC時間00:00:00。這通常被稱為 Unix 時代。程序員為了方便選擇了這個日期,因為這是他們發明 Unix 時間的最接近的日期。

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

Unix 時間數據格式

嚴格來說,沒有。原始數據類型是 32 位整數,即使在功能更強大的系統中,情況也經常如此。

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

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

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

2038年問題

Y2K 錯誤(歷史上最嚴重的編程錯誤之一)影響了將年份存儲為兩位數的計算機系統。到了2000年,這樣的系統把它當成1900年了。其實,這並沒有想像中的那麼災難性,主要是因為很多人提前花了很多時間和精力,為之做好了準備。

如果您在上一節中註意了,您可能已經發現了可能影響 Unix 時間的類似問題。嗯,Unix 時間確實有它自己的數據問題:Y2k38 問題。(它通常被稱為問題,而不是錯誤;也許自 2000 年以來我們變得更加樂觀了!)當 Unix 時間在 2038 年字面上用完時,系統會將新日期視為 1902 或 1970。或者可能他們'只會完全失敗。

至少這個問題不會在新年前夜的午夜襲擊我們。32 位 Unix 時間的最後一秒將落在 3 月 19 日。最終,我們很可能會在 2038 年之前升級大多數係統,否則無論如何它們都會過時。

一些有用的時間戳資源

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

Dan's Tools 是大量有用的網絡應用程序的集合,其中之一是時間戳轉換器。它更基本,但具有非常乾淨的演示文稿並且易於使用。

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

什麼是 Unix 時間,Unix 時代是什麼時候?

通過命令行工具使用 Unix 時間

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

$ date Wed Feb 10 12:28:30 GMT 2021

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

$ date +%s 1612960114

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

$ date -d "Jan 2 1970" +%s 82800

在 macOS 上,date是一個不同的程序,它需要一組不同的標誌:

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

另一方面,您可以使用-r標誌從 Unix 時間戳轉換:

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

其他一些程序使用%s格式來處理 Unix 時間。例如,如果您想在 Unix 時間顯示文件的修改日期,使用lsLinux 版本,您可以使用以下命令:

$ 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 以一種有趣的方式處理事情。它有一個Date.now()方法來獲取自 Unix 紀元以來的毫秒數。當然,您可以將其除以 1,000 並將結果四捨五入以給出等效的 Unix 時間(以秒為單位):

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

理解 Unix 時間

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

諸如紀元和時間戳之類的概念是 Linux 入門的重要組成部分。要了解有關ls等基本要素的更多信息,請查看我們的基本 Linux 命令指南。

Tags: #未指明

如何在 Chromebook 上複製和粘貼

如何在 Chromebook 上複製和粘貼

在切換到 Chromebook 時,您可能想知道的第一件事是如何做基本的事情——你在以前的操作系統中掌握的那種東西。複製和粘貼是您必須在某一時刻使用的一項基本功能。

如何使用 tt 在 Linux 上進行打字測試

如何使用 tt 在 Linux 上進行打字測試

在現代科技時代,打字已成為許多職業最常見的活動之一。學會更快更準確地打字可以幫助您在相同的時間內完成更多的工作。

Wi-Fi 在 Ubuntu 上不工作?這是修復方法

Wi-Fi 在 Ubuntu 上不工作?這是修復方法

Ubuntu 因其健壯性和相對較少的錯誤而廣受歡迎。但它肯定不是沒有問題。其中一個問題是其 Wi-Fi 驅動程序。您可能會打開系統電源,卻發現您的 Wi-Fi 無法正常工作。

2020 年適用於 Ubuntu 的最佳免費視頻編輯器

2020 年適用於 Ubuntu 的最佳免費視頻編輯器

除了所有的絨毛,這裡列出了適用於 Ubuntu 的最佳免費視頻編輯器,您可以使用它們來創建令人驚嘆的視頻。

如何在 Chromebook 上創建和掃描二維碼

如何在 Chromebook 上創建和掃描二維碼

快速響應碼,簡稱 QR 碼,是一種高級條碼,包含比傳統條碼更多的信息。這些代碼是二維的,允許您垂直或水平掃描它們。

如何在 Arch Linux 中安裝和刪除軟件包

如何在 Arch Linux 中安裝和刪除軟件包

想在 Arch Linux 上安裝軟件包但不知道如何安裝?很多人第一次從基於 Debian 的發行版遷移到 Arch 時都會遇到這個問題。但是,您可以使用包管理器輕鬆管理基於 Arch 的系統上的包。

如何在 Linux 上安裝 Spotify

如何在 Linux 上安裝 Spotify

Spotify 是最大的音樂流媒體服務之一。它具有適用於移動(Android 和 iOS)和桌面(Mac 和 Windows)設備的本機客戶端。

9 個讓你開始使用 Linux 的基本命令

9 個讓你開始使用 Linux 的基本命令

Linux 操作指南通常希望您在終端中執行某些操作,這乍一看似乎令人生畏。但不要擔心;這個 Linux 命令備忘單將涵蓋打開終端和發出一些有用命令的過程。

如何使用 Mv 命令移動 Linux 文件

如何使用 Mv 命令移動 Linux 文件

雖然您可能已經知道如何使用 GUI 文件瀏覽器在 Linux 中移動文件,但您可能想知道終端中是否有移動命令可以讓您快速將文件移動到不同的目錄。mv 命令就是您想要的,它的簡單語法和一些可選的安全標誌易於使用。

如何在 Ubuntu 的“Alt-Tab”中取消組合 Windows

如何在 Ubuntu 的“Alt-Tab”中取消組合 Windows

默認情況下,Ubuntu 允許您切換應用程序而不是窗口。以下是如何在 Ubuntu 上的 Alt-Tab 中反轉它並取消組合選項卡。