我在格式化从MySQL数据库收到的日期时遇到问题。我一直收到这个错误:
Notice: A non well formed numeric value encountered in C:\xampp\htdocs\index.php on line 23
这是我的代码:
$news_query = $database->query("SELECT * FROM " . DB_NEWS . " ORDER BY 'date'");
while($news_data = mysql_fetch_array($news_query,MYSQL_ASSOC)){
$date = date("M d, Y - g:i:s A", $news_data['date']);
echo "
<DIV class = 'news_post'>
<DIV class = 'news_title'>" . $news_data['title'] . "</DIV>
<DIV class = 'news_info'>Posted on " . $date . " By " . $news_data["author"] . "</DIV>
<DIV class = 'entry'>" . $news_data['entry'] . "</DIV>
</DIV>";
}
我已阅读PHP手册中的时间戳和日期函数,我似乎无法弄清楚我的问题是什么。
答案 0 :(得分:3)
您是否在MySQL中使用日期时间格式?
试试这个:
<?php
date("M d, Y - g:i:s A", strtotime( $news_data['date'] ) );
?>
答案 1 :(得分:2)
$news_data['date']
中数据库的日期可能是日期的字符串表示形式。 date()
函数采用格式字符串和可选的时间戳,这是一个整数。这就是你得到错误的原因。
答案 2 :(得分:1)
最有可能的是,strtotime()
会将您的日期转换为date()
所需的格式。
而不是:
$date = date("M d, Y - g:i:s A", $news_data['date'])
你想:
$date = date("M d, Y - g:i:s A", strtotime($news_data['date']))
答案 3 :(得分:0)
尝试此查询
$database->query("SELECT *,unix_timestamp(date) as date
FROM ".DB_NEWS." ORDER BY date")
答案 4 :(得分:0)
有两种可能性。
第一个是:在查询中使用UNIXTIMESTAMP
sql函数,或者像之前说的那样使用strtotime。
第二个,我更喜欢使用DateTime PHP对象。
$date = new DateTime($datas['date']);
//if an error occurs because of the format use createFromFormat
$date = DateTime::createFromFormat('d-m-y',$datas['date']);//for exemple for dd-mm-YYYY format