You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter 3中如何从数组提取的datetime中拆分出日期?

在CodeIgniter 3中正确提取Datetime字段的日期部分

推荐方案:用PHP DateTime类处理(最稳定)

DateTime类能兼容绝大多数标准datetime格式,完全避免手动拆分的格式风险,代码示例:

// 从模型获取数据
$data['result'] = $this->MTransaksi->cekpengembalian();

// 遍历处理每条数据的tanggal_kembali字段
foreach ($data['result'] as &$item) {
    // 跳过空值避免报错
    if (empty($item['tanggal_kembali'])) {
        $item['tanggal_kembali_date'] = '';
        continue;
    }
    $dt = new DateTime($item['tanggal_kembali']);
    // 转为你需要的Y-m-d格式
    $item['tanggal_kembali_date'] = $dt->format('Y-m-d');
}

如果你坚持用explode(仅限确定格式的场景)

如果你的tanggal_kembali是标准的Y-m-d H:i:s格式(MySQL默认datetime格式),可以按空格拆分,但必须做空值和数组索引判断:

foreach ($data['result'] as &$item) {
    $item['tanggal_kembali_date'] = '';
    if (!empty($item['tanggal_kembali'])) {
        $parts = explode(' ', $item['tanggal_kembali']);
        // 确保拆分后有至少一个元素
        if (isset($parts[0])) {
            $item['tanggal_kembali_date'] = $parts[0];
        }
    }
}

注意:如果datetime格式不是空格分隔(比如ISO格式的Y-m-dTH:i:s),这种方法会直接失效,不推荐在不确定格式时使用。

更高效的方案:数据库层面直接提取日期

在模型的查询中直接用SQL函数提取日期,减少PHP端的处理成本,以MySQL为例:

// MTransaksi模型的cekpengembalian方法修改如下
public function cekpengembalian() {
    // 用DATE()函数直接提取日期字段,别名tanggal_kembali_date
    $this->db->select('*, DATE(tanggal_kembali) AS tanggal_kembali_date');
    // 你的其他查询条件(比如where、join等)
    // $this->db->where(...);
    return $this->db->get('your_transaksi_table')->result_array();
}

这样获取到的$data['result']里直接包含tanggal_kembali_date字段,无需额外处理。

你之前显示异常的可能原因

  1. tanggal_kembali字段存在空值,直接explode会导致$parts[0]为空或报错
  2. 字段格式不是预期的空格分隔(比如存储格式有误)
  3. 没有对拆分后的数组做索引判断,导致Undefined offset错误

内容的提问来源于stack exchange,提问作者Sirious

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 15:40:23