PHP未正确转换12个月中的2个月..PHP Bug


PHP not converting 2 out of 12 months correctly...PHP Bug?

我正试图从mySQL数据库中获取一个完整的日期(格式为YYYY-MM-DD),并让PHP将2位数字的月数转换为3个字母的表示形式,并将其放在一个选择框中供用户编辑,当用户选择一个月时,它需要作为2位数字月数返回。下面的代码工作得很好,只是出于某种原因,08返回给用户的是08,而不是AUG,9月份也是如此,但其他所有月份都按照我的意愿进行。你认为这是PHP本身的故障吗?我确信我没有错过任何东西。提前感谢!

    $endmonth = (substr($record['twpEndDate'], -5, 2));
    $endmonthnumber = (substr($record['twpEndDate'], -5, 2));
    if ($endmonth==00) {$endmonth=''; $endmonthnumber='';}
    else
    if ($endmonth==01) {$endmonth='JAN'; $endmonthnumber='01';}
    else
    if ($endmonth==02) {$endmonth='FEB'; $endmonthnumber='02';}
    else
    if ($endmonth==03) {$endmonth='MAR'; $endmonthnumber='03';}
    else
    if ($endmonth==04) {$endmonth='APR'; $endmonthnumber='04';}
    else
    if ($endmonth==05) {$endmonth='MAY'; $endmonthnumber='05';}
    else
    if ($endmonth==06) {$endmonth='JUN'; $endmonthnumber='06';}
    else
    if ($endmonth==07) {$endmonth='JUL'; $endmonthnumber='07';}
    else
    if ($endmonth==08) {$endmonth='AUG'; $endmonthnumber='08';}
    else
    if ($endmonth==09) {$endmonth='SEP'; $endmonthnumber='09';}
    else
    if ($endmonth==10) {$endmonth='OCT'; $endmonthnumber='10';}
    else
    if ($endmonth==11) {$endmonth='NOV'; $endmonthnumber='11';}
    else
    if ($endmonth==12) {$endmonth='DEC'; $endmonthnumber='12';}
echo "
<select name='twpEndMonth'>
<option value=" .$endmonthnumber. " style='display:none; selected'>" .$endmonth. "</option>
<option value='01'>JAN</option>
<option value='02'>FEB</option>
<option value='03'>MAR</option>
<option value='04'>APR</option>
<option value='05'>MAY</option>
<option value='06'>JUN</option>
<option value='07'>JUL</option>
<option value='08'>AUG</option>
<option value='09'>SEP</option>
<option value='10'>OCT</option>
<option value='11'>NOV</option>
<option value='12'>DEC</option>
</select>";

怎么样:

$endmonth = strtoupper(date('M',strtotime($record['twpEndDate'])));
$endmonthnumber = (substr($record['twpEndDate'], -5, 2));

如果你需要一个很长的If列表,那么可能是出了问题。

试试这个:

$endmonth = explode("-", $record['twpEndDate']);
$endmonthnumber = '';//your code was getting a pointless number
if($endmonth[1] == '01'){$endmonth='JAN'; $endmonthnumber='01';}
elseif($endmonth[1] == '02'){$endmonth='FEB'; $endmonthnumber='02';}
//and so on