字符串是否与strtotime()一起使用有效?

时间:2011-02-11 09:03:24

标签: php datetime strtotime

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

2 个答案:

答案 0 :(得分:10)

如果

strtotime()无法理解您的日期格式,则返回false,因此您可以检查其返回值。该功能没有任何副作用,因此试图调用它不会有害。

// $format = ...

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

但请注意,strtotime()仅支持与服务器体系结构相同的Unix时间戳范围。这意味着它将在某些日期范围内错误地返回false。来自manual

  

注意

     

时间戳的有效范围通常是从星期五,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位时间戳几乎无限期。

答案 1 :(得分:2)

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

这是一个链接strtotime()

有很多关于strtotime()的例子。