【问题标题】:How to convert month name to month number如何将月份名称转换为月份编号
【发布时间】:2015-12-10 02:39:45
【问题描述】:

我想将月份名称转换为月份编号。通过使用此代码,它只显示 12 月的结果,其他月份没有工作。但如果我改变年份,它就是工作。例如,我选择 11 月和 2015 年,结果是 12 月和 2015 年。如果我选​​择 11 月和 2014 年,结果是 12 月和 2014 年。

数据库中的值为 2015-09-28。我认为我如何将月份名称转换为月份编号有一个错误。谁能帮我修复我的代码。

这是我的代码:

查看

  <?php echo form_open("announcement/announcement_result");?>
  <?php echo form_dropdown('m', $m, set_value('m'), 'id="m"'); ?>
  <?php echo form_dropdown('q', $q, set_value('q'), 'id="q"'); ?>
  <?php echo form_submit('search', 'SEARCH', 'class="button expand"'); ?>
  <?php echo form_close(); ?>

控制器

function announcement_list()
{

  $data['q'] = array(
    '' => ' Select Year',);   

  for ($i = 0; $i < 10; $i++)
    {
    $date = date('Y') - $i;
    $data['q'][$date] = $date; 
    }

  $m = '';
      $data['m'] = $m;
  $data['m'] = array(
          '' => 'Select Month',
      );
      for ($m = 1; $m <= 12; $m++) {
          $month = date("F", mktime(0, 0, 0, $m));
          $data['m'][$month] = $month;      
    }


    if ($m='December') 
    {
      $m='12';
    }
    else if($m='November') 
    {
      $m='11';
    }
    else if ($m='October') 
    {
      $m='10';
    }
    else if ($m='September') 
    {
      $m='9';
    }
    else if ($m='August') 
    {
      $m='8';
    }
    else if ($m='July') 
    {
      $m='7';
    }
    else if ($m='June') 
    {
      $m='6';
    }
    else if ($m='May') 
    {
      $m='5';
    }
    else if ($m='April') 
    {
      $m='4';
    }
    else if ($m='March') 
    {
      $m='3';
    }                                                           
    else if ($m='February') 
    {
      $m='2';
    }
    else if ($m='January')
    {
      $m='1';
    }
    $data['results'] = $this->news_model->get_announcement_list($config['per_page'], $page);
    }

型号

    function get_results($m, $q, $limit=6, $offset=0)
{
    $sql = "SELECT *
        FROM ArkibBerita
        WHERE code='PENGUMUMAN' AND Enable = 'Y' AND Lang ='EN' AND YEAR(BeritaDate)='{$q}' AND MONTH(BeritaDate)='{$m}'
        ORDER BY position ASC
        OFFSET {$offset} ROWS
        FETCH NEXT {$limit} ROWS ONlY";

        $query = $this->db->query($sql);
        return $query->result();

}

【问题讨论】:

  • 为什么不直接将日期传递给 DateTime 对象,然后使用格式函数来获取所需的所有信息??
  • @chrisShick 先生,你能告诉我吗,我真的不知道如何开始

标签: php sql-server codeigniter date


【解决方案1】:

怎么样:

echo date('m', strtotime('january'));

输出:

01

如果您不想要前导零,请使用n 或查看手册了解其他用法; http://php.net/manual/en/function.date.php.

在您的代码中,您不是在比较日期,而是在设置它。

if ($m='December') 

应该是

if ($m=='December') 

一等于集合。两个相等比较。三个相等比较并且需要相同的变量类型。 http://php.net/manual/en/language.operators.comparison.php

因此,在每次迭代中,您的$m 都将是12,因为$m 始终设置为字符串,这是它遇到的第一个条件。如果您颠倒您的订单,它将被设置为1

您还应该考虑为您的 SQL 查询使用准备好的语句。 http://php.net/manual/en/security.database.sql-injection.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 2020-07-25
    • 2017-06-17
    相关资源
    最近更新 更多