Laravel中如何将数据库updated_at格式化为日-月-年 时分秒
实现方法
方法一:原生JavaScript实现(无需额外依赖)
直接用原生Date对象解析ISO格式字符串,手动拼接成目标格式,重点处理月份的英文全称:
function formatDateTime(isoString) { const date = new Date(isoString); // 补零处理日期、时分秒 const day = String(date.getDate()).padStart(2, '0'); // 获取月份英文全称(getMonth()返回0-11,对应1-12月) const month = date.toLocaleString('en-US', { month: 'long' }); const year = date.getFullYear(); const hours = String(date.getHours()).padStart(2, '0'); const minutes = String(date.getMinutes()).padStart(2, '0'); const seconds = String(date.getSeconds()).padStart(2, '0'); return `${day}-${month}-${year} ${hours}:${minutes}:${seconds}`; } // 调用示例 const originalUpdatedAt = '2022-12-20T13:20:51.000000Z'; const formattedDateTime = formatDateTime(originalUpdatedAt); // 输出示例:20-December-2022 13:20:51(结果随本地时区变化)
如果需要强制使用UTC时间而非本地时区,把getDate()、getHours()等方法替换为getUTCDate()、getUTCHours()即可。
方法二:使用Moment.js(简洁高效,适合已有依赖的项目)
如果你的Laravel项目已经引入Moment.js(常见于通过npm或CDN引入的场景),可以直接用它的格式化能力快速实现:
// 引入Moment后直接调用 const originalUpdatedAt = '2022-12-20T13:20:51.000000Z'; // 格式规则:DD=两位日期,MMMM=月份全称,YYYY=四位年份,HH=24小时制小时,mm=分钟,ss=秒 const formattedDateTime = moment(originalUpdatedAt).format('DD-MMMM-YYYY HH:mm:ss'); // 输出示例:20-December-2022 13:20:51 // 若需转换为本地时区,可先解析UTC时间再转本地: const formattedLocalTime = moment.utc(originalUpdatedAt).local().format('DD-MMMM-YYYY HH:mm:ss');
补充说明
- 原生方法无需额外依赖,适合轻量场景;Moment.js代码更简洁,处理时区、日期边缘情况的稳定性更强。
- 原生方法中通过
toLocaleString('en-US')确保月份输出为英文全称,避免受系统语言环境影响。
内容的提问来源于stack exchange,提问作者zapp02
相关产品推荐
相关产品推荐

