一尘不染

什么是Unix时间戳,为什么要使用它?

php

什么是Unix时间戳?在PHP中,使用日期时,该函数strtotime()输出一些整数值-
那是什么?我尝试了解这一点,但无法获得满意的答案,尤其是为什么我们需要使用转换日期strtotime()


阅读 858

收藏
2020-05-29

共1个答案

一尘不染

什么是Unix时间戳

简而言之,Unix时间戳是一种跟踪时间(以秒为单位)的方式。此计数从1970年1月1日UTC的Unix Epoch开始。因此,
Unix时间戳仅仅是特定日期和Unix Epoch之间的秒数
。还应该指出的是,无论您位于全球何处,该时间点在技术上都不会改变。这对于计算机系统在在线和客户端动态和分布式应用程序中跟踪和排序日期信息非常有用。许多网站管理员使用Unix时间戳的原因是因为它们可以一次表示所有时区。有关更多信息,请阅读Wikipedia文章

什么strtotime()是它,如何有用

顾名思义,strtotime()函数用于将日期字符串转换为Unix时间戳(str到time)。

PHP手册文档中获得strtotime()

strtotime —将任何英语文本日期时间描述解析为Unix时间戳

例如,假设您要获取date的Unix时间戳25 December 2013,则可以这样使用strtotime()

echo strtotime("25 December 2013"), "\n";       // => 1387909800

strtotime()还可以处理相对的时间和日期格式。例如,考虑以下内容:

echo strtotime("+1 month"), "\n";               // => 1390980039
echo strtotime("last day of next month"), "\n"; // => 1391152839

这些是一些基本示例。strtotime()也可以处理非常复杂的日期格式。请参阅文档以获取更多信息。

我应该何时使用时间戳记

Unix时间戳的解释与区域无关,并且是从相同的时间点计算的,与时区无关。如果您有一个在多个时区使用的Web应用程序,并且需要日期/时间来反映各个用户的设置,请使用时间戳记。

在的情况下strtotime(),它通常用于在日期格式之间进行转换。由于strtotime()可以解析几乎任何日期字符串,因此可以将日期字符串转换为时间戳。有了时间戳后,您可以使用date()或类似功能随意格式化它。

局限性 strtotime()

在32位系统上,整数的最大值为2,147,483,647。可以用这种方式表示的最远时间是2038年1月19日星期二的03:14:07
UTC。这也称为2038年问题

请参阅PHP手册中的以下说明:

时间戳记的有效范围通常是从1901年12月13日星期五20:45:54 UTC到2038年1月19日星期二03:14:07
UTC。(这些日期对应于32位带符号整数的最小值和最大值。)此外,并非所有平台都支持负时间戳,因此,日期范围不得超过Unix纪元。这意味着,例如1970年1月1日之前的日期将不适用于Windows,某些Linux发行版和其他一些操作系统。PHP
5.1.0和更高版本克服了此限制。

使用DateTime对象

如果您使用的日期超出了13 Dec 1901to 19 Jan 2038范围,请考虑使用PHP的DateTime对象,该对象可以处理更大范围的日期。在任一方向上,DateTime都可以表示约2930亿年。

DateTime类在> =
5.2.0的PHP版本上可用。如果您运行的PHP版本高于5..2.0,则在处理日期和时间时应使用DateTime。这是最好的方法。如果您使用的是旧PHP版本,请先进行
升级 。5.3.0之前的任何版本都是古老的。

这是一些有关DateTime的好文章:

和一本书的架子:

2020-05-29