首页 > 解决方案 > Codeigniter :比较两个日期并将其显示在带有列表的表格上

问题描述

我想比较两个日期并将它们显示在我的文章前面

差异日期示例。ArtOne(+2 小时)| 2019 年 10 月 10 日 | 某物

SQL

CREATE TABLE `mytable` (
  `id` int(11) NOT NULL,
  `PERSONNE_A_LIVRER` text NOT NULL,
  `ETAT` text NOT NULL,
  `DATE_TRANSPORT` text NOT NULL,
  `DATE_LIVRER` text NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

DATE_TRANSPORT = 01/10/2019 11:38 DATE_LIVRER = 02/10/2019 11:38 ...

我想知道列中小时数的差异。这是我的模型,

    public function select_all() {
        $sql = "SELECT * FROM mytable";

        $data = $this->db->query($sql);

        return $data->result();
    }

我的控制器的代码

    public function listart() {
        $data['dataPegawai'] = $this->M_pegawai->select_all();
        $this->load->view('pegawai/list_data', $data);
    }

    function differenceInHours($startdate,$enddate) {
        $starttimestamp = strtotime($startdate);
        $endtimestamp = strtotime($enddate);
        $difference = abs($endtimestamp - $starttimestamp)/3600;
        return $difference;
    }

我的视图html和php的代码

<?php
  foreach ($dataPegawai as $albat) {
    ?>
  <tr>
    <td style="min-width:90px;">
      <?php echo $albat->PERSONNE_A_LIVRER ; ?>
    </td>
    <td>
      <?php echo $albat->N_LIVRAISON;?>
    </td>
    <td>
      <?php echo $hours_difference = differenceInHours($albat->DATE_EXP,$albat->DATE_TRANSPORT);?>
    </td>
    <td>
      <?php echo $albat->DESTINATAIRE;?>
    </td>
    <td>
      <?php echo $albat->DIRECTION_A_LIVRER ;?>
    </td>
    <td>
      <?php echo $albat->DESCRIPCION_ETAT;?>
    </td>
    <td class="text-center" style="min-width:90px;">

      <button class="btn default konfirmasiHapus-articulo"> List it </button>
    </td>
  </tr>
  <?php
  }
?>

并提前感谢

标签: phpmysqlcodeigniter

解决方案


例如,你想比较两者DATE_EXPDATE_TRANSPORT值,你可以differenceInHours()在控制器上调用函数,而不是在视图上,因为保持视图只用于演示是一个很好的做法。

像这样修改控制器:

    public function listart() {
        $data['dataPegawai'] = $this->M_pegawai->select_all();
        foreach ($data['dataPegawai'] as $key => $value) {
            $startdate = $value->DATE_EXP;
            $enddate = $value->DATE_TRANSPORT;
            $data['dataPegawai']->$key->hourDifference = $this->differenceInHours($startdate, $enddate);
        }
        $this->load->view('pegawai/list_data', $data);
    }

    function differenceInHours($startdate,$enddate) {
        $starttimestamp = strtotime($startdate);
        $endtimestamp = strtotime($enddate);
        $difference = abs($endtimestamp - $starttimestamp)/3600;
        return $difference;
    }

像这样的观点:

<?php
  foreach ($dataPegawai as $albat) {
    ?>
  <tr>
    <td style="min-width:90px;">
      <?php echo $albat->PERSONNE_A_LIVRER ; ?>
    </td>
    <td>
      <?php echo $albat->N_LIVRAISON;?>
    </td>
    <td>
      <?php echo $albat->hourDifference;?>
    </td>
    <td>
      <?php echo $albat->DESTINATAIRE;?>
    </td>
    <td>
      <?php echo $albat->DIRECTION_A_LIVRER ;?>
    </td>
    <td>
      <?php echo $albat->DESCRIPCION_ETAT;?>
    </td>
    <td class="text-center" style="min-width:90px;">

      <button class="btn default konfirmasiHapus-articulo"> List it </button>
    </td>
  </tr>
  <?php
  }
?>

推荐阅读