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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:27:03