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

如何不借助外部库格式化DIV标签中的UTC日期字符串?

解决方案

方法一:直接字符串处理(推荐,无时区转换)

这种方法针对固定格式的日期字符串直接操作,无需处理时区转换,适合需要保留原字符串显示的日期时间的场景。

方式1:拆分字符串(Split)

const dateInUtc = '2021-12-09T15:43:29+01:00';
// 按'T'拆分,分离日期部分和带时区的时间部分
const [datePart, timeWithOffset] = dateInUtc.split('T');
// 按'+'拆分时间部分,只保留时分秒部分
const timePart = timeWithOffset.split('+')[0];
// 拼接成目标格式
const formattedDate = `${datePart} - ${timePart}`;
console.log(formattedDate); // 输出:2021-12-09 - 15:43:29

方式2:正则表达式替换

const dateInUtc = '2021-12-09T15:43:29+01:00';
// 匹配'T'或'+'及后续所有内容,将'T'替换为' - ',其余匹配项清空
const formattedDate = dateInUtc.replace(/T|\+.*/g, match => match === 'T' ? ' - ' : '');
console.log(formattedDate); // 输出:2021-12-09 - 15:43:29

方法二:使用原生Date对象(适用于需要时区转换的场景)

如果需要将原日期转换为本地时间或UTC时间后再格式化,可以使用原生Date对象。注意:该方法会根据当前环境的时区自动转换时间。

const dateInUtc = '2021-12-09T15:43:29+01:00';
const date = new Date(dateInUtc);

// 获取各时间部分,用padStart确保两位数格式
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');

// 拼接目标格式
const formattedDate = `${year}-${month}-${day} - ${hours}:${minutes}:${seconds}`;
console.log(formattedDate); 
// 示例输出(假设本地时区为UTC+8):2021-12-09 - 22:43:29

注意:若需求是保留原字符串中的日期时间(不做时区转换),优先选择方法一,避免时区差异导致的时间偏差。


内容的提问来源于stack exchange,提问作者Ramdhas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:15:37