【发布时间】:2008-10-31 17:10:38
【问题描述】:
我正在努力解决 php 5.2.6 的问题。我们使用的 api 以这种格式返回日期 DDMMYYYYHHMM。正是这种格式,固定长度,没有分隔符。但是,在我的实验中,这种格式似乎会破坏 strptime,当我以这种格式向它提供日期时,它会返回错误(失败)。至少在我的系统上,它可以通过这个例子重现:
$format = "%d%m%Y%H%M"; echo print_r(strptime(strftime($format,1225405967),$format),true);
如果我在日期和时间之间添加任何字符,它会起作用,甚至是空格。所以,这确实有效:
$format = "%d%m%Y %H%M"; echo print_r(strptime(strftime($format,1225405967),$format),true);
我是否遗漏了一些明显的东西?
编辑:除此之外,由于 cmets 指示的结果,这似乎是特定于平台的。我可以在办公室运行 OSX Leopard 的 Mac 上重现它,但 Linux 机器可以很好地解析它。我认为这是 OSX *nix 中底层 C 库中 strptime 的错误或特性。
【问题讨论】:
-
您使用的是什么平台?我在 PHP 5.2.6 (cli) Linux Kernel 2.6.9-55 上尝试了您的示例,并且有两个看起来完全相同的数组输出。
-
我的开发平台是 OSX Leopard 和 Apache2。有趣的结果,感谢您的回复。
-
这一直看起来更特定于平台。我可以让它在另一个运行另一个 Linux 发行版的服务器上工作(两个例子)。我将继续在 Mac OSX 附带的 C 库中的 strptime 中搜索已知错误。看来这就是我的问题所在。
-
祝你好运!抱歉,我没有任何 Mac 平台可供测试。
-
我遇到了你在 Leopard 上使用股票 PHP 描述的问题。我在同一个盒子上的 MAMP 安装工作正常。
标签: php formatting strptime