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