如何使用原生JavaScript转换API返回的日期时间格式
处理ISO日期格式转换
针对你拿到的2023-01-24T06:00:00.000Z格式日期,这里有几种简单直接的转换方式:
方法1:字符串替换(最直接)
利用字符串的replace方法,把T换成空格,再去掉固定后缀.000Z:
const rawDate = dataAPI.dateStation; const formattedDate = rawDate.replace('T', ' ').replace('.000Z', ''); console.log(formattedDate); // 输出:2023-01-24 06:00:00
这种方式适合确定API返回的毫秒部分固定为.000的场景,操作简单高效。
方法2:正则表达式(更通用)
如果API返回的毫秒部分可能不是.000(比如.123Z),用正则匹配去掉所有.xxxZ后缀,同时替换T:
const rawDate = dataAPI.dateStation; const formattedDate = rawDate.replace(/T/, ' ').replace(/\.\d+Z$/, ''); console.log(formattedDate); // 输出:2023-01-24 06:00:00
正则\.\d+Z$会匹配末尾的点号+任意位数数字+Z,适配不同毫秒值的情况。
方法3:Date对象格式化(支持时区调整)
如果需要后续对日期做其他操作,或需转换时区,可以先转成Date对象再拼接格式:
const rawDate = dataAPI.dateStation; const date = new Date(rawDate); // 因为原始日期带Z(UTC时区),所以用UTC方法确保时间和原数据一致 const year = date.getUTCFullYear(); const month = String(date.getUTCMonth() + 1).padStart(2, '0'); const day = String(date.getUTCDate()).padStart(2, '0'); const hours = String(date.getUTCHours()).padStart(2, '0'); const minutes = String(date.getUTCMinutes()).padStart(2, '0'); const seconds = String(date.getUTCSeconds()).padStart(2, '0'); const formattedDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; console.log(formattedDate); // 输出:2023-01-24 06:00:00
如果需要转换为本地时区,把UTC相关方法换成对应本地方法(比如getFullYear、getMonth等)即可。
内容的提问来源于stack exchange,提问作者Blagovest Pizhev
相关产品推荐
相关产品推荐

