这是我的代码:
var_dump(strftime("%m-%d-%Y %l:%M:%S", time()));
echo "<br />";
var_dump(strftime("%Y-%d-%m %H:%M:%S", time()));
第一行返回 false,第三行返回预期字符串 '2012-10-09 23:03:18' (length=19)
为什么第一行返回假?
我正在运行 Windows 7x64 并使用相当默认的设置运行 wamp。
这是我的代码:
var_dump(strftime("%m-%d-%Y %l:%M:%S", time()));
echo "<br />";
var_dump(strftime("%Y-%d-%m %H:%M:%S", time()));
第一行返回 false,第三行返回预期字符串 '2012-10-09 23:03:18' (length=19)
为什么第一行返回假?
我正在运行 Windows 7x64 并使用相当默认的设置运行 wamp。
如果第一行不起作用但第二行起作用,那么原因显然是因为%l
var_dump(strftime("%l", time()));
确实会在 Windows 上引发错误。
阅读有关 strftime 的手册...
您的 C 库可能不支持所有转换说明符,在这种情况下,PHP 的 strftime() 将不支持它们。此外,并非所有平台都支持负时间戳,因此您的日期范围可能会限制为不早于 Unix 纪元。这意味着 %e、%T、%R 和 %D(可能还有其他)——以及 1970 年 1 月 1 日之前的日期——将无法在 Windows、某些 Linux 发行版和其他一些操作系统上运行。对于 Windows 系统,可以在 » MSDN 中找到支持的转换说明符的完整概述。
因此%l
显然是不支持的。
在我的本地 WAMP 服务器上遇到此问题时,我找到了一个%l
无法正常工作的解决方案。在修复 之后%e
,%#d
我测试%#I
了一个小时而没有前面的 0 并且它完美地工作。所以你可以使用这是你的代码:
var_dump(strftime("%m-%d-%Y %#I:%M:%S", time()));
不幸的是,这在 linux 环境中不起作用,它会输出 #I 而不是小时。