php – 使用strftime()的一些代码的奇怪行为
我从数据库中提取一些日期并使用
PHP strftime格式化它们.
现在,一切都按预期工作,除非我使用%A格式,它应该给我完整的工作日名称,函数只返回NULL,除非日期恰好在周末,在这种情况下它正确返回“周六或周日”. 所有其他格式都有效,甚至是%a(工作日短名称). 我唯一的想法是,它是某种令人难以置信的奇怪的配置问题服务器端,但我想听听是否有人有其他想法… 编辑:一些代码,虽然它几乎是我之前写的… $id = (int)$_GET['event']; $res = mysql_query("SELECT date FROM events WHERE event_id=".$id); $row = mysql_fetch_array($res); echo strftime("%a %H:%M",$row['date']); echo strftime("%A %H:%M",$row['date']); 第一个echo工作正常,返回例如Thu 15:30,第二个返回NULL,除非$row [‘date’]落在星期六或星期日. 如果这可能有任何帮助,代码在一个类中,但我看不出这可能会如何影响结果… EDIT2:这不是数据库或日期格式的问题,否则第一个回声将不起作用.此外,我可以删除数据库代码,并使用mktime或strtotime生成日期,但它仍然无法正常工作. EDIT3(解决方案):发现问题.在意大利语中,除了周六和周日之外,日期的名称以“(例如lunedì)”结尾,没有重音字母.操作的结果传递给json_encode,显然不喜欢重音字符……调用utf8_encode(或htmlentities)解决了这个问题. 解决方法
根据手册:
http://php.net/manual/en/function.strftime.php
如果你传递的不是时间戳,那你就错了.真的不能说为什么第一个通过而第二个没通过.也许PHP正试图弥补.在任何情况下,如果你有一个文本时间表示,你需要先在它上面调用strtotime(). 编辑 我在我的系统中运行了以下代码 $row['date'] = '2011-04-06 08:33:29'; echo strftime("%a %H:%M",$row['date']); echo '<br>'; echo strftime("%A %H:%M",$row['date']); 我把它作为输出 Notice: A non well formed numeric value encountered in F:webrootutilstest.php on line 4 Thu 00:33 Notice: A non well formed numeric value encountered in F:webrootutilstest.php on line 6 Thursday 00:33 您应该在系统上启用通知.将其更改为时间戳应该可以解决它. 编辑2
如果您可以发布不起作用的样本,我们可以看看 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |