如何将数据库中以new Date()插入的日期转换为易读格式且无需修改入库逻辑
日期格式转换解决方案
无需修改现有入库逻辑,只需要在业务层/展示层对取出的ISO格式字符串做一次转换即可,两种可行实现方案如下:
方案1:原生JS实现(无第三方依赖)
你拿到的2021-09-24T12:38:54.656Z是标准ISO 8601格式的日期字符串,之前调用toLocaleString失效是因为没有先转成Date对象,按以下步骤操作即可:
- 第一步:将日期字符串传入
Date构造函数生成合法Date对象
const isoDateStr = '2021-09-24T12:38:54.656Z' const dateObj = new Date(isoDateStr)
- 第二步:调用
toLocaleString方法自定义输出格式
可以通过调整参数完全匹配你需要的Sept 25 2015, 8:00 PM样式:
const formattedDate = dateObj.toLocaleString('en-US', { year: 'numeric', month: 'short', day: 'numeric', hour: 'numeric', minute: '2-digit', hour12: true }).replace(',', '') // 输出示例:Sep 24 2021, 8:38 PM // 如需将月份缩写从3位改为4位(比如Sep转Sept),可以额外加一个简单的月份映射替换即可
小提示:如果需要指定时区展示,可以在参数中新增
timeZone配置项,比如设置timeZone: 'Asia/Shanghai'就会按照东八区的时间输出。
方案2:轻量日期库实现(适合多日期处理场景)
如果项目中存在大量日期格式化、计算需求,可以引入dayjs这类体积仅2KB的轻量日期库,代码更简洁易维护:
import dayjs from 'dayjs' const formattedDate = dayjs('2021-09-24T12:38:54.656Z').format('MMM D YYYY, h:mm A') // 直接输出目标格式:Sep 24 2021, 8:38 PM
内容的提问来源于stack exchange,提问作者quielfala
相关产品推荐
相关产品推荐

