为什么Windows上的strftime()返回false?(我没有使用%e)

Ale*_*ers 5 php windows-7-x64

这是我的代码:

var_dump(strftime("%m-%d-%Y %l:%M:%S", time()));
echo "<br />";
var_dump(strftime("%Y-%d-%m %H:%M:%S", time()));
Run Code Online (Sandbox Code Playgroud)

第一行返回false,第三行返回预期的字符串'2012-10-09 23:03:18'(长度= 19)

为什么第一行返回false?

我正在运行Windows 7x64并使用相当默认的设置进行操作.

fir*_*ire 5

如果第一行不起作用但第二行不起作用,那么原因显然是因为 %l

var_dump(strftime("%l", time()));
Run Code Online (Sandbox Code Playgroud)

确实会在Windows上抛出错误.

阅读有关strftime的手册......

并非所有转换说明符都可能由C库支持,在这种情况下,PHP的strftime()不支持它们.此外,并非所有平台都支持负时间戳,因此您的日期范围可能不会早于Unix时代.这意味着%e,%T,%R和%D(以及可能的其他) - 以及1970年1月1日之前的日期 - 将无法在Windows,某些Linux发行版和其他一些操作系统上运行.对于Windows系统,可以在»MSDN上找到受支持的转换说明符的完整概述.

因此,%l不支持clealy.

  • 确实是l.感谢您注意(以及可能的其他人).我一定错过了.有关将来的参考,请访问http://msdn.microsoft.com/en-us/library/fe06s4ak.aspx以获取Windows中支持的转换列表 (2认同)