如何在JavaScript或PHP Laravel Blade中将指定日期字符串转为30-11-2020格式
日期格式转换实现方案
1. JavaScript 实现
不需要引入第三方库,用原生API即可实现:
function convertDate(inputStr) { // 清理日期中的序数词,兼容所有浏览器解析 const cleanedStr = inputStr.replace(/(\d+)(st|nd|rd|th)/, '$1'); const date = new Date(cleanedStr); // 补零函数,确保日、月都是两位数 const pad = (n) => n < 10 ? `0${n}` : n; const day = pad(date.getDate()); const month = pad(date.getMonth() + 1); // 月份从0开始计数,需要+1 const year = date.getFullYear(); return `${day}-${month}-${year}`; } // 测试用例 const input = 'Mon, 30th Nov 2020 08:54 PM'; console.log(convertDate(input)); // 输出:30-11-2020
注意事项
- 代码兼容所有现代浏览器及IE10以上版本
- 如果确认运行环境都是新版本浏览器,可以省略序数词清理步骤
2. Laravel Blade 实现
Laravel默认集成Carbon日期处理库,直接调用即可:
直接在Blade模板内转换
@php $originalDate = 'Mon, 30th Nov 2020 08:54 PM'; $targetDate = \Carbon\Carbon::parse($originalDate)->format('d-m-Y'); @endphp {{-- 页面输出 --}} {{ $targetDate }}
更优雅的封装方案(推荐)
如果该格式需要频繁使用,可以在对应模型中定义访问器:
// 写在对应的Eloquent模型文件中 public function getFormattedCustomDateAttribute() { return \Carbon\Carbon::parse($this->original_date_column)->format('d-m-Y'); }
定义完成后在Blade中直接调用属性即可:
{{ $data->formatted_custom_date }}
注意事项
- Carbon原生支持识别带序数词的日期字符串,无需额外做格式清理
- Laravel 5.5及以上版本无需额外配置Carbon,开箱即用
内容的提问来源于stack exchange,提问作者Md Kanok Hossain
相关产品推荐
相关产品推荐

