如何按多分隔符拆分带时区的DateTime格式字符串提取中间时分秒值
问题原因
你写的代码无法正常执行的核心问题是:raw_time.split("T") 执行后返回的是数组,而数组本身没有split方法,只有字符串类型才有这个方法,所以调用链走到第二步就会报错。
正确实现方案
方案1:字符串拆分(适配+号时区场景)
针对你给出的固定ISO带时区时间格式,直接按分隔符取对应片段即可:
const raw_time = "2021-07-21T22:24:40+02:00"; // 先按T拆分取后半段,再按时区的+号拆分取前半段 const timePart = raw_time.split("T")[1].split("+")[0]; console.log(timePart); // 输出 22:24:40
方案2:正则匹配(适配正负时区通用场景)
如果需要兼容时区为负的情况(比如2021-07-21T22:24:40-08:00),可以用正则匹配更稳妥:
const raw_time = "2021-07-21T22:24:40+02:00"; // 匹配T之后、+/-时区符号之前的时分秒片段 const timePart = raw_time.match(/T(\d{2}:\d{2}:\d{2})[+-]/)[1]; console.log(timePart); // 输出 22:24:40
注意事项
不推荐直接用Date对象处理该需求:因为Date实例会自动将时间转换为运行环境的本地时区,最终拿到的时分秒不是原字符串里的原始值,不符合你的需求。
内容的提问来源于stack exchange,提问作者Andreasssouwxt
相关产品推荐
相关产品推荐

