当前位置: 首页 > 面试题库 >

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

百里胜泫
2023-03-14
问题内容

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


问题答案:

什么是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::__construct()DateTime::createFromFormat()创建一个DateTime对象。请注意,DateTime::createFromFormat()仅在PHP> = 5.3上可用。使用此方法,您可以解析日期和时间怪异的字符串,否则可能无法使用strtotime()
  • 使用DateTime::format()方法将您的DateTime对象转换为您可能要使用的任何日期格式

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

  • 为什么PHP DateTime摇摆不定
  • PHP正确的方法:日期和时间

和一本书的架子:

  • php | architect的日期和时间编程指南(由Derick Rethans编写,他是PHP的核心日期扩展的贡献者)


 类似资料:
  • 问题内容: serialVersionUID缺少a时,Eclipse发出警告。 问题答案: 首先,我需要解释什么是序列化。 序列化 允许将对象转换为流,以便通过网络发送该对象,或者保存到文件或保存到DB以供使用。 有一些序列化规则。 仅当对象的类或其超类实现接口时,该对象才可序列化 一个对象是可序列化的(本身实现了接口),即使其超类不是。但是,可序列化类的层次结构中的第一个超类(不实现Serial

  • Bootstrapping(引导) 是 Netty 中配置程序的过程,当你需要连接客户端或服务器绑定指定端口时需要使用 Bootstrapping。 如前面所述,Bootstrapping 有两种类型,一种是用于客户端的Bootstrap,一种是用于服务端的ServerBootstrap。不管程序使用哪种协议,无论是创建一个客户端还是服务器都需要使用“引导”。 面向连接 vs. 无连接 请记住,这

  • 问题内容: 我刚刚发现,运行日历脚本时,PHP中的时间戳限制为2038。这实际上是什么意思?为什么是2038,而不是2050或2039?如果时间戳仅是从给定日期(1970年)起算的秒数,为什么还要设置限制? 问题答案: 该限制是由大多数C库用来表示该计数的4字节带符号整数强加的。快速数学(假设365天年,并非完全正确): 这也意味着下限约为1900。一些库已经开始引入64位纪元计数,但目前它们之间

  • 问题内容: 我尝试阅读一些文章,但对这个主题不太清楚。 有人想向我解释以下几点: 为什么通过HTTP使用websocket 什么是全双工通信 延迟延迟交互是什么意思 问题答案: 为什么通过HTTP使用websocket? webSocket是客户端和服务器之间的连续连接。该连续连接允许以下操作: 数据可以随时从服务器发送到客户端,而客户端甚至不需要请求。这通常称为服务器推送,对于客户端需要在服务器

  • 问题内容: 我正在尝试使用此命令安装Python软件包 我收到权限错误,不确定为什么。我可以使用来运行它,但是有人告诉我这是个坏主意,我应该改用virtualenv。 什么是虚拟环境?它对我有什么作用? 问题答案: 与系统Python和库一起运行会将您限制为OS提供商选择的一个特定Python版本。试图在一个Python安装上运行所有Python应用程序,可能会导致库集合之间发生版本冲突。对系统P

  • 本文向大家介绍什么是闭包(closure)为什么要用它相关面试题,主要包含被问及什么是闭包(closure)为什么要用它时的应答技巧和注意事项,需要的朋友参考一下 闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域,将函数内部的变量和方法传递到外部。 闭包的特性: 1.函数内再嵌套函数