加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

Php 为什么unix时间戳需要以'@';为了让strotime

发布时间:2022-10-18 20:00:33 所属栏目:Unix 来源:互联网
导读: Php 为什么unix时间戳需要以&#x27@'为了让strotime()理解它?
php
Php 为什么unix时间戳需要以&#x27@'为了让strotime()理解它?,php,strtotime,Php,Strtotime,我注意到str

Php 为什么unix时间戳需要以'@';为了让strotime()理解它?

php

Php 为什么unix时间戳需要以'@';为了让strotime()理解它?,php,strtotime,Php,Strtotime,我注意到strotime()以一种奇怪的方式处理unix时间戳,我很好奇是否有人知道这是为什么:var_export(strtotime('1330725042')); // falsevar_export(strtotime('@1330725042')); // 1330725042当给定unix时间戳时,strotime()为什么返回false(除非所述时间戳以@作为前缀)这是我构建的一个库方法的内部代码,该库方法旨在将未知格式变量“解析”为时间戳。在这种情况下,使用裸stro

我注意到

strotime()

以一种奇怪的方式处理unix时间戳,我很好奇是否有人知道这是为什么:

var_export(strtotime('1330725042'));  // false
var_export(strtotime('@1330725042')); // 1330725042

当给定unix时间戳时,

strotime()

为什么返回

false

(除非所述时间戳以

@

作为前缀)

这是我构建的一个库方法的内部代码,该库方法旨在将未知格式变量“解析”为时间戳。在这种情况下unix时间戳包,使用裸

strotime()

没有帮助,因为当传入值实际上是时间戳时,它返回错误的结果

我修改了library方法,对类似时间戳的值进行显式检查,并返回未修改的值,因此。。。我们可以说,这个问题已经没有实际应用了;我只是好奇。

因为strotime的意思是字符串到时间,而您的“1330725042”不是时间字符串,而是用引号括起来的unix时间戳

strotime()用于“2012年3月2日”之类的值

如果您已经有1330725042作为unix时间戳值,那么为什么需要使用strotime()?

strotime()输出时间戳,并且它的参数应该是日期的文本表示形式,因此您使用它是错误的。

可能是因为

strotime

转换为unix时间戳,所以它不需要一个作为参数

Read

Strotime不识别unix时间戳,但识别纯英语日期或相对时间(如“+1天”或“1个月”)

@before值肯定会在调用中触发php的“忽略错误”模式(有趣的副作用),从而将不可解析的值返回到var转储。

strotime()

接收的字符串必须采用特定格式

如果

strotime()

无法识别输入格式,则返回

FALSE

。由于unix时间只是一个数字序列,除非明确指定所使用的格式,否则无法正确解析它们。将

@

放在开始处会向函数指示此序列是unix时间格式的

有关更多信息,请参阅以下文档:

其他所有人都正确使用该函数,它接受字符串而不是时间戳字符串。但是,如果您使用@符号获得结果,则可能是运算符表示以下文本是时间戳,或者根据PHP的标准用法@,该函数绕过了错误

无论哪种方式,为什么要对时间戳进行strotime?

strotime()

旨在将英文日期格式转换为unix时间戳,因此提供unix时间戳而不是日期格式将不是此函数的有效使用。可以在php手册的

上看到接受的日期和时间格式。答案是,前导的

@

表示unix时间戳日期格式,而整数本身是无效的日期格式。见:

为什么

strotime('@1a')

给出了一个非错误的结果-3599,但是我不知道。lol

因为文档上这么说:)我不认为整数是链接Mathieu的有效日期/时间格式+1。我想上面有文件,谢谢。实际上,我不知道unix时间戳可以是一种有效的PHP日期时间格式。@Mathieu-将其作为答案发布,因为它实际上回答了问题的第二部分question@dqhendricks我想知道什么时候会有人问这个问题(:我用更多的信息更新了我的问题。

“@1215282385”

实际上是一种有效的格式。请查看注释中的链接。不幸的是,我必须-1这一点,因为在这种情况下,

@

的存在与抑制错误无关;它只是.WRT why call

strotime()的一部分

关于时间戳,这个问题背后的动机是在代码不知道值已经是时间戳的情况下。我已经用更多信息更新了我的问题。您可能正在使用某个人的库,该库根据您提供的内容调用strotime,而您有一个时间戳。WRT为什么调用

strotime()

在时间戳上,这个问题背后的动机是代码不知道值已经是时间戳的情况。我已经用更多信息更新了我的问题。不幸的是,我必须-1这一点,因为在这种情况下,

@

的存在与抑制错误无关;这只是一部分。感谢链接。我在以下位置找到了:'Unix时间戳“@”“-”?[0-9]+“@1215282385”

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章