5

这是我的代码:

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。

4

2 回答 2

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显然是不支持的。

于 2012-09-11T03:52:31.420 回答
3

在我的本地 WAMP 服务器上遇到此问题时,我找到了一个%l无法正常工作的解决方案。在修复 之后%e%#d我测试%#I了一个小时而没有前面的 0 并且它完美地工作。所以你可以使用这是你的代码:

var_dump(strftime("%m-%d-%Y %#I:%M:%S", time()));

不幸的是,这在 linux 环境中不起作用,它会输出 #I 而不是小时。

于 2013-01-23T16:17:20.290 回答