Linux 纪元时间
纪元时间是 Unix 和 Linux 系统上使用的约定,许多应用程序依赖它来计算日期和其他类似函数之间的时间。某些 Linux 命令(例如 date
和 perl
)内置了纪元选项。纪元表示自 1970 年 1 月 1 日起经过的秒数。
如果你想知道的话,这个日期并没有什么特别的。这只是不久前商定的一个任意日期,只是为了方便而使用。在本教程中,我们将向您展示如何将日期和时间与 Unix 纪元时间相互转换。
在本教程中您将学习:
什么是 Unix 纪元时间?
如何将日期与 Unix 纪元时间相互转换
Linux 纪元时间是多少?
如上所述,纪元时间可以用作参考基准,即 1970 年 1 月 1 日的 00:00:00 UTC。从该日期开始,应用程序可以根据该事件之前或之后发生的秒数来分配时间戳。
这些时间戳非常适合计算,但对人们来说几乎没有用处。机器需要知道 Thu 02 Jun 2016 12:59:59 PM UTC
会转换为 1464872399
。因此,纪元时间是您更有可能在 Bash 脚本或程序代码中找到的函数。
大纪元时间转换示例
请参阅以下命令,您可以在自己的终端中运行这些命令,以将日期和时间与 Unix 纪元时间相互转换。
要将时间戳转换为人类可读的日期,请使用以下命令语法并用您自己的时间戳代替本示例中的时间戳。请注意,这将返回 UTC 时间。
$ date -ud @1464872499 Thu 02 Jun 2016 01:01:39 PM UTC
如果您想获取系统当前配置的时区的时间,可以省略
-u
选项。$ date -d @1464872499 Thu 02 Jun 2016 09:01:39 AM EDT
要将日期转换为纪元时间戳,请使用以下语法。
$ date -d '06/02/2016 09:01:39' +"%s" 1464872499
请注意,
-d
选项要求您指定美国格式 (MM/DD/YYY) 的日期。该命令还假设我们正在使用当前时区,因为尚未指定 -u 选项。您也可以使用这种格式。可以随意省略星期几(在本例中为星期四),也可以不省略。请注意,这里不需要
-u
选项,因为明确提到了 UTC。$ date -d 'Thu 02 Jun 2016 01:01:39 PM UTC' +"%s" 1464872499
要从我们的系统检索当前纪元时间,请使用以下
date
命令。$ date +"%s" 1653511975
我们还可以在 Perl 中利用纪元时间。以下命令将纪元日期转换为人类可读的日期。
$ perl -e 'print scalar(localtime(1284763671)), "\n"' Fri Sep 17 18:47:51 2010
结束语
在本教程中,您了解了纪元时间以及如何在 Linux 系统上使用它。您还了解了如何将人类可读的日期转换为纪元时间,以及如何将纪元秒转换为人类可读的日期和时间。了解这一点将允许您在两个日期之间执行计算以及从 Linux 命令行执行类似的函数。