7

PHPstrtotime()假设给定的输入是一个表示有效时间的字符串。在使用之前strtotime(),我如何验证将要提供给它的字符串是其有效格式之一?

4

2 回答 2

12

strtotime()如果它无法理解您的日期格式,则返回 false,因此您可以检查其返回值。该函数没有任何副作用,因此尝试调用它不会受到伤害。

// $format = ...

if (($timestamp = strtotime($format)) !== false) {
    // Obtained a valid $timestamp; $format is valid
} else {
    // $format is invalid
}

但是请注意,strtotime()它只支持与服务器架构相同的 Unix 时间戳范围。这意味着它会在某些日期范围内错误地返回 false。从手册

注意

时间戳的有效范围通常是从 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 和更新的版本克服了这个限制。

对于 64 位版本的 PHP,时间戳的有效范围实际上是无限的,因为 64 位在任一方向上都可以代表大约 2930 亿年。

由于服务器架构可能会有所不同,因此根据您的用例,您可能会被限制为 32 位 Unix 时间戳,即使 64 位时间戳实际上涵盖了无限的时间段。

于 2011-02-11T09:05:25.563 回答
3

实际上你不能在执行函数之前检查,但你可以看看官方的php.net页面。您唯一能做的就是检查您的函数是否返回“false”。

这是一个链接strtotime()

有很多例子可以说明你可以用 strtotime() 做什么。

于 2011-02-11T09:05:44.017 回答