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

CodeIgniter中PHP日期转换失效:April 1st 2017转2017/04/01

解决CodeIgniter中PHP日期格式转换问题

你的代码之所以无法运行,核心问题是解析日期时用错了格式掩码——你传入的格式'm/d/Y'和输入日期"April 1st 2017"完全不匹配,导致DateTime::createFromFormat返回了false,后续调用format自然会报错。

下面是修正后的解决方案:

基础PHP实现(推荐)

$input_date = "April 1st 2017";

// 用匹配输入格式的掩码解析日期:'M'对应英文月份缩写,'jS'对应带序数词的日期
$date_obj = DateTime::createFromFormat('M jS Y', $input_date);

// 先检查解析是否成功,避免无效日期引发错误
if ($date_obj !== false) {
    // 转换为你需要的2017/04/01格式
    echo "Date = " . $date_obj->format('Y/m/d');
} else {
    echo "输入的日期格式无效!";
}

关键格式说明

  • M:匹配英文月份缩写(比如April、Jan、Dec等)
  • jS:匹配带序数词的日期(1st、2nd、3rd、4th等),其中j代表不带前导零的日,S会自动忽略序数词后缀
  • Y:匹配四位年份

可选:CodeIgniter框架自带工具实现

如果你想使用框架自带的日期工具,可以借助CodeIgniter的Date助手:

// 先加载Date助手
$this->load->helper('date');

$input_date = "April 1st 2017";
// 解析日期并检查是否有效
$parsed_info = date_parse_from_format('M jS Y', $input_date);
if ($parsed_info['error_count'] === 0) {
    $formatted_date = mdate('%Y/%m/%d', strtotime($input_date));
    echo "Date = " . $formatted_date;
} else {
    echo "输入的日期格式无效!";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:12:30