什么是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
  • 阅读 ( 164 )
  • 分类:IT

你可能感兴趣的文章

用posix信号对mac应用程序进行老式故障排除

...秘的菜单选项,用于向进程发送信号。你有没有想过那是什么?如果您选择它,您将看到像SIGINT和SIGHUP这样的模糊术语,这并不完全清楚。那么这些信号到底是什么呢? ...

  • 发布于 2021-03-16 15:08
  • 阅读 ( 197 )

Mac电脑比windows更不容易受到恶意软件攻击的5个原因

...为,Mac电脑不像Windows PC那样容易受到病毒的影响。但为什么这是,确切地说? ...

  • 发布于 2021-03-18 19:05
  • 阅读 ( 271 )

unix与linux的区别及其重要性

... 什么是unix系统(unix)? ...

  • 发布于 2021-03-19 10:38
  • 阅读 ( 259 )

如何在linux上更改帐户密码

...-l mary 因为过期日期是过去的,所以不管所有者可能使用什么身份验证方法,此帐户现在都被真正锁定。 要恢复帐户,请使用与数字参数-1相同的命令: sudo chage -E -1 mary 键入以下内容以再次检查: sudo chage -l mary 帐户到期日期...

  • 发布于 2021-04-02 22:58
  • 阅读 ( 142 )

命令行:为什么人们还在为它们烦恼?

...算机,或控制无头或嵌入式系统等明显的锁定情况外,为什么要在图形桌面上使用命令行? 行话解释 命令行、终端窗口和shell等术语几乎可以互换使用。那是不正确的行话。他们都很不一样。他们是有关系的,但他们不是一回...

  • 发布于 2021-04-03 05:30
  • 阅读 ( 177 )

为什么不关闭mac上的虚拟内存

...止你的Mac在磁盘上存储虚拟内存,但你不应该这么做。 什么是虚拟内存(virtual memory)? 虽然您的Mac只有有限的物理内存,但它会向正在运行的程序公开更大面积的可用虚拟内存。例如,即使您的Mac具有8gb的RAM,Mac上的每个32位...

  • 发布于 2021-04-07 11:14
  • 阅读 ( 291 )

什么是unix,为什么它很重要?

...S X、Android、iOS、Chrome OS、Orbis OS,无论路由器上运行的是什么固件——所有这些操作系统通常都被称为“类Unix”操作系统。 unix的设计延续至今 相关:在Linux中,“一切都是文件”是什么意思? 早在20世纪60年代中后期,Unix就...

  • 发布于 2021-04-09 04:10
  • 阅读 ( 194 )

为什么windows使用反斜杠而其他所有东西都使用正斜杠

...的斜杠并不重要。但是,有时候,区别仍然很重要。 为什么windows使用反斜杠:历史 那么为什么Windows是一个奇怪的操作系统呢?这都归结于几十年前发生的几起历史事故。 大约在1970年,Unix引入了正斜杠字符(即/字符)作为...

  • 发布于 2021-04-11 11:40
  • 阅读 ( 172 )

facebook bug祝贺我们46年的友谊

...准时间。从那时起的每一秒都被称为纪元时间,这就是为什么一些小玩意会神秘地切换到1969年12月31日。所以这个理论认为,就像你的数字时钟可以意外地自行重置一样,你在Facebook上与某人成为朋友的时间也可能意外地自行重...

  • 发布于 2021-05-02 21:01
  • 阅读 ( 115 )

gnu公司(gnu)和unix系统(unix)的区别

...,但其他操作系统也占了更大的使用份额。无论我们使用什么操作系统,最终的功能都是一样的,即使用计算机使我们的任务更容易。在我们开始讨论GNU和Unix之间的区别之前,让我们用外行的术语来学习与任何操作系统相关的...

  • 发布于 2021-06-25 00:53
  • 阅读 ( 423 )
辣椒泡枸杞
辣椒泡枸杞

0 篇文章

相关推荐