我正在使用一个服务,该服务提供了一种奇怪的日期格式,但我无法找到一种简洁的方法来转换为JS日期对象。我需要对日期执行一些逻辑,这就是为什么我需要转换它
服务返回的日期格式如下:02/Dec/2020:23:58:15 +0000
。
非常感谢任何帮助,提前感谢
如果用空格替换第一个:
,则会解析日期
const str = "02/Dec/2020:23:58:15 +0000"
console.log(new Date(str.replace(/:/," "))); // change only the first colon
为了获得更安全的版本,我们似乎需要这样做——在Safari、Chrome和Firefox 中进行测试
const monthNames = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
const re = /(d{2})/(w{3})/(d{4}):(d{2}):(d{2}):(d{2}) (.*)/;
const makeDate = str => {
const [_, dd, mmm, yyyy, hh, min, ss, tz] = str.match(re)
const tzStr = [tz.slice(0, 3), ':', tz.slice(3)].join(''); // make ±hh:mm
const mm = monthNames.indexOf(mmm.toLowerCase()); // English only
const isoString = `${yyyy}-${mm}-${dd}T${hh}:${min}:${ss}${tzStr}`
console.log(isoString)
return new Date(isoString)
};
const str = "02/Dec/2020:23:58:15 +0000"
const d = makeDate(str);
console.log(d)