如何使用Carbon将英文长日期转换为m-d-y格式?
解决英文日期转m-d-y格式的问题
方法一:使用Carbon处理
如果项目里已经在用Carbon,直接用它的parse方法识别英文日期字符串,再通过format输出目标格式即可:
// 假设动态获取的日期字符串是 $dateStr $dateStr = 'November 12, 2018'; $carbonDate = \Carbon\Carbon::parse($dateStr); $formattedDate = $carbonDate->format('m-d-Y'); // 输出结果:11-12-2018
parse方法能自动识别绝大多数常见日期格式,包括这种带完整英文月份的写法;format('m-d-Y')里的参数对应:m是两位数字月份,d是两位数字日期,Y是四位数字年份,刚好满足需求。
方法二:原生PHP DateTime类实现
如果不想依赖Carbon,用PHP原生的DateTime类也能完成:
$dateStr = 'November 12, 2018'; // 方式1:自动解析 $date = new DateTime($dateStr); // 方式2:指定格式解析(更稳妥,避免自动识别出错) $date = DateTime::createFromFormat('F j, Y', $dateStr); $formattedDate = $date->format('m-d-Y'); // 结果同样是:11-12-2018
这里createFromFormat的参数F j, Y完全匹配输入格式:F代表完整英文月份名,j代表不带前导零的日期,Y代表四位年份,这种方式比自动解析更严谨。
异常处理建议
如果是动态数据,建议加上异常处理,避免因日期格式不规范导致报错:
try { $carbonDate = \Carbon\Carbon::parse($dateStr); $formattedDate = $carbonDate->format('m-d-Y'); } catch (\Exception $e) { // 根据业务需求处理,比如记录日志或设置默认值 $formattedDate = null; }
内容的提问来源于stack exchange,提问作者adel kazem
相关产品推荐
相关产品推荐

