如何在TypeScript中将ISO日期格式转换为dd/MM/yyyy HH:mm
解决TypeScript中ISO日期转dd/MM/yyyy HH:mm格式的问题
方法1:原生Date API手动格式化
先写通用格式化函数,可灵活切换本地/UTC时区:
// 本地时区版本 function formatToLocalDate(isoDate: string): string { const date = new Date(isoDate); const day = String(date.getDate()).padStart(2, '0'); const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始计数 const year = date.getFullYear(); const hours = String(date.getHours()).padStart(2, '0'); const minutes = String(date.getMinutes()).padStart(2, '0'); return `${day}/${month}/${year} ${hours}:${minutes}`; } // UTC时区版本(统一时间标准时使用) function formatToUTCDate(isoDate: string): string { const date = new Date(isoDate); const day = String(date.getUTCDate()).padStart(2, '0'); const month = String(date.getUTCMonth() + 1).padStart(2, '0'); const year = date.getUTCFullYear(); const hours = String(date.getUTCHours()).padStart(2, '0'); const minutes = String(date.getUTCMinutes()).padStart(2, '0'); return `${day}/${month}/${year} ${hours}:${minutes}`; }
遍历cols数组批量处理指定字段:
// 假设cols的类型定义 interface ColItem { dataHoraInicio: string; dataHoraFim: string; // 其他字段... } // 替换数组中的日期字段 const formattedCols = cols.map((item: ColItem) => ({ ...item, dataHoraInicio: formatToLocalDate(item.dataHoraInicio), dataHoraFim: formatToLocalDate(item.dataHoraFim) }));
方法2:用Intl.DateTimeFormat快速格式化
利用浏览器内置国际化API,代码更简洁且适配本地化格式:
function formatISODate(isoDate: string): string { return new Intl.DateTimeFormat('pt-BR', { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit', // timeZone: 'UTC' // 需UTC时间时取消注释 }).format(new Date(isoDate)); } // 处理cols数组 const formattedCols = cols.map(item => ({ ...item, dataHoraInicio: formatISODate(item.dataHoraInicio), dataHoraFim: formatISODate(item.dataHoraFim) }));
注意事项
- 确保传入的ISO日期字符串合法,
new Date()可正常解析; - 时区选择依据业务需求,默认用本地时区,跨地域场景建议用UTC;
- 大量日期处理时,Intl方法性能与兼容性更优。
内容的提问来源于stack exchange,提问作者Gustavo Rossi
相关产品推荐
相关产品推荐

