这是我的PHP代码:
echo '<br />1. '.$w_time_no;
echo '<br />2. '.strtotime($w_time_no);
echo '<br />3. '.date('G:i', strtotime($w_time_no));
这就是我得到的:
1. 0000-00-00 22:00:00
2.
3. 2:00
为什么strtotime()本身没有输出?服务器设置有问题吗?服务器:Apache / 2.2.11(Win32),PHP 5.2.10,MySQL客户端版本:5.0.51a。
答案 0 :(得分:10)
strtotime
没有“输出”任何东西,顺便说一下:如果出现错误,它会返回false
;请参阅manual:
返回值
返回成功时间戳,FALSE 除此以外。在PHP 5.1.0之前,这个 函数在失败时返回-1。
什么不输出任何内容echo
:false
被视为空字符串,没有任何内容可以输出。
strtotime的文档还给出了日期的有效范围:
注意:时间戳的有效范围 通常是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和更新的版本克服了这个限制。
'0000-00-00'
超出此范围,因此不被视为有效日期;因此false
返回值。
作为旁注,要真正了解变量中的内容,可以使用var_dump
。
作为一个与Xdebug一起使用的bnus,它会为你提供一个很好的输出; - )
答案 1 :(得分:7)
0000-00-00不是有效日期。
date()给出一个输出,因为它将输入时间解释为0并补偿服务器的时区,我假设。我敢打赌date('Y-m-d H:i', strtotime(...))
会给1970-01-01 2:00
答案 2 :(得分:-1)
您误以为strtotime()
time()
。
strtotime
字面上是字符串到时间,它需要一个字符串来转换.....到时间。
返回成功时间戳,否则返回
FALSE
。在PHP 5.1.0之前,此函数将在失败时返回-1
。
因此无法验证时间字符串。