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
相关产品推荐
相关产品推荐

