【问题标题】:PHP not converting 2 out of 12 months correctly...PHP Bug?PHP 没有正确转换 12 个月中的 2 个月...PHP 错误?
【发布时间】:2013-06-23 06:53:08
【问题描述】:

我正在尝试从 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>";

【问题讨论】:

  • 您要查找的搜索词是“八进制”。
  • 简短版本是:“不要在数字中使用前导零”。
  • 为什么它会在 1 月到 7 月的几个月内有效,而不是 8 月和 9 月?
  • 仅在 y 次中有效... PHP 开发人员... thedailywtf.com/Articles/God-Date-Mangling-101.aspx
  • 好的,所以我最好不要使用前导零,然后将其重新添加到表单处理器中?

标签: php


【解决方案1】:

怎么样:

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

如果您需要很长的 if 列表,那么可能有问题。

【讨论】:

    【解决方案2】:

    试试这个:

    $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
    

    【讨论】:

    • 没问题,很高兴能帮上忙。
    猜你喜欢
    • 2012-02-23
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2014-05-05
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多