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

23 php timestamp strtotime

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

Ama*_*ali 52

什么是Unix时间戳

简而言之,Unix时间戳是一种将时间跟踪为总运行秒数的方法.此计数始于1970年1月1日UTC时的Unix Epoch.因此,Unix时间戳只是特定日期和Unix Epoch之间的秒数.还应该指出的是,无论您在地球上的哪个位置,这个时间点在技术上都不会改变.这对于在线和客户端的动态和分布式应用程序中跟踪和分类过时信息的计算机系统非常有用.许多网站管理员使用Unix时间戳的原因是因为它们可以同时代表所有时区.有关更多信息,请阅读Wikipedia文章.

strtotime()它是什么以及如何有用

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

PHP手册文档strtotime():

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

例如,假设您想获得日期的Unix时间戳25 December 2013,那么您可以这样使用strtotime():

echo strtotime("25 December 2013"), "\n";       // => 1387909800
Run Code Online (Sandbox Code Playgroud)

strtotime()还可以处理相对时间和日期格式.例如,请考虑以下事项:

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

这些是一些基本的例子.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 190119 Jan 2038范围内,则可以考虑使用PHP的日期时间可与更广泛的日期工作对象.DateTime在任何一个方向上都可以代表大约2930亿年.

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

以下是DateTime上的一些好文章:

还有一本书架: