0

谁能解释为什么下面的代码

function convdate($date) {
$formatdate = strtoupper(date('M', $date ));
$formatdate .= " " .date('d',$date). " ";
return $formatdate;
}

$sql = "SELECT * FROM livedates ORDER by date";
$res = mysql_query($sql);

while($livedates = mysql_fetch_array($res)){

   $output= convdate($livedates['date']) . "<br>";
   echo $output;
}

输出:

DEC 31
DEC 31
DEC 31

如果我只是使用从结果集中输出日期

$output= $livedates['date']. "<br>";

我明白了

2013-08-03
2013-08-10
2013-12-09

我想要得到的是

AUG 03
AUG 10
DEC 09 

这将是我的一个错误,我意识到这一点,但我很难过!

4

4 回答 4

2

$livedates['date']在将其传递给date函数之前,您需要转换为 unix 时间戳。strtotime可以做到:

$formatdate = strtoupper(date('M', strtotime($date) ));
于 2013-08-28T17:39:18.473 回答
1

你的功能有什么问题

date 的第二个参数必须是时间戳,所以这是可以工作的函数

<?php
function convdate($date) {
$date = strtotime($date);
$formatdate = strtoupper(date('M', $date ));
$formatdate .= " " .date('d',$date). " ";
return $formatdate;
}
?>
于 2013-08-28T17:39:20.580 回答
0

尝试将您的功能更改为:

function convdate($date) {
    $formatdate = new DateTime($date);
    return strtoupper($formatdate->format('M d'));
}

DateTime课程使用起来非常棒,我建议您检查一下。

于 2013-08-28T17:41:39.527 回答
0
Your updated code should be as follows    
function convdate($date) {
    $formatdate = strtoupper(date('M', strtotime($date) ));
    $formatdate .= " " .date('d',strtotime($date)). " ";
    return $formatdate;
    }

    $sql = "SELECT * FROM livedates ORDER by date";
    $res = mysql_query($sql);

    while($livedates = mysql_fetch_array($res)){

       $strinoutput= convdate($livedates['date']) . "<br>";
       echo $strinoutput;
    }
于 2013-08-28T17:51:59.730 回答