React.js中如何转换ISO时间格式?已尝试slice,需获取月份名称
问题2:拆分日期为
31 Jan, 2023和时间为18:15:24 同样用Intl.DateTimeFormat分别处理日期和时间部分,代码如下:
格式化日期
const formatToDayMonthYear = (isoTime) => { const date = new Date(isoTime); return new Intl.DateTimeFormat('en-US', { day: 'numeric', month: 'short', year: 'numeric' }).format(date); };
格式化时间(24小时制)
const formatToTime = (isoTime) => { const date = new Date(isoTime); return new Intl.DateTimeFormat('en-US', { hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false // 改为true可切换为12小时制(带AM/PM) }).format(date); };
在组件中使用
<td>{formatToDayMonthYear(object.time_date)}</td> <td>{formatToTime(object.time_date)}</td>
如果一定要手动处理(不推荐,原生API更稳定),可以硬编码月份数组实现:
const monthAbbrs = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; // 手动格式化日期为31 Jan, 2023 const manualFormatDate = (isoTime) => { const date = new Date(isoTime); return `${date.getDate()} ${monthAbbrs[date.getMonth()]}, ${date.getFullYear()}`; }; // 手动格式化时间为18:15:24(处理毫秒四舍五入) const manualFormatTime = (isoTime) => { const date = new Date(isoTime); const hours = String(date.getUTCHours()).padStart(2, '0'); const minutes = String(date.getUTCMinutes()).padStart(2, '0'); const seconds = String(Math.round(date.getUTCSeconds() + date.getUTCMilliseconds() / 1000)).padStart(2, '0'); return `${hours}:${minutes}:${seconds}`; };
注意:手动处理需要自己处理时区、数字补零、月份索引(getMonth()返回0-11)等细节,容易出错,优先用原生API。
内容的提问来源于stack exchange,提问作者Destiny Franks
相关产品推荐
相关产品推荐

