对于Safari和IE中的日期问题,我看到了很多答案,使用replace(/-/g, "/")对这些情况很有吸引力-- 2022-11-30 17:00 UTC+0200,但是当我有其他的时区时-- 2022-11-28 21:56 UTC-0500 --它会再次为任何浏览器创建无效的日期。
因此,我正在寻找一种解决方案,它将取代"-“而不是全球范围的,但最终只能在第一个单词中。
谢谢
发布于 2022-11-07 21:06:40
那又如何呢?
const date = `2022-11-30 17:00 UTC-0200`
const regex = /(\d+)-(\d+)-(\d+)/g
const result = date.replace(regex, '$1/$2/$3')
console.log(result)
发布于 2022-11-07 21:17:24
您可以选择在捕获UTC之前捕获-,如果捕获,则将整个匹配放回原处,否则,将-替换为/
const text = "2022-11-28 21:56 UTC-0500";
console.log( text.replace(/(UTC)?-/g, (x,y) => y ? x : "/") )
这里,
(UTC)?- -匹配并捕获组1中的可选UTC,然后匹配- char(x,y) => y ? x : "/"如果y (组1)匹配,则返回x (整个匹配),否则,将/替换为-.。
掉头版本:
const text = "2022-11-28 21:56 UTC-0500";
console.log( text.replace(/(?<!UTC)-/g, "/") )
// => 2022/11/28 21:56 UTC-0500
(?<!UTC)-匹配没有紧接在UTC前面的-。
https://stackoverflow.com/questions/74352872
复制相似问题