php - 为什么 unix 时间戳需要以 '@' 为前缀才能让 strtotime() 理解它?

标签 php strtotime

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

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

为什么在给定 unix 时间戳时 strtotime() 返回 false(除非所述时间戳以 @ 为前缀)?

这是我构建的库方法的内部结构,旨在将未知格式变量“解析”为时间戳。在这种情况下使用裸 strtotime() 没有帮助,因为当传入值实际上是时间戳时它会返回错误的结果。

我重新设计了库方法来显式检查类似时间戳的值并将其原封不动地返回,所以……我们应该说,这个问题不再有实际应用;我只是好奇。

最佳答案

strtotime() 接收的字符串必须采用特定格式。 http://www.php.net/manual/en/datetime.formats.php

如果 strtotime() 不能识别输入格式,它返回 FALSE。由于 unix 时间只是一个数字序列,除非您明确指定您使用的格式,否则它无法正确解析它们。将 @ 放在开头会向函数指示此序列采用 unix 时间格式。

有关更多信息,请参阅文档: http://php.net/manual/en/function.strtotime.php

关于php - 为什么 unix 时间戳需要以 '@' 为前缀才能让 strtotime() 理解它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9540894/

相关文章:

php - 带有wordpress的主从系统

php - php中Mysql数据库行值获取问题

php, date() 没有返回正确的日期/时间

php - PHP 中两个时间戳之间的差异

php - 带有大文件的 file_get_contents 和 file_put_contents

php - 如何使用PhoneGap iOS成功登录后重定向HTML页面?

php - 试图找到给定任何日期的前六天

mysql - Medoo SQL 数据库选择与日期范围匹配的行

php - 格式化时间无效

php - 如何让 CKeditor 从 Hspace 和 Vspace 切换到正确的 CSS