为了账号安全,请及时绑定邮箱和手机立即绑定

如何将这种日期格式转换为JS Date?

如何将这种日期格式转换为JS Date?

白猪掌柜的 2023-09-28 17:15:07
我正在使用的服务提供了一种奇怪的日期格式,我只是无法找出转换为 JS 日期对象的简洁方法。我需要对日期执行一些逻辑,这就是我需要转换它的原因。服务返回的日期格式如下:02/Dec/2020:23:58:15 +0000。非常感谢任何帮助,提前致谢
查看完整描述

1 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

:如果将第一个替换为空格,则日期将被解析

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)


查看完整回答
反对 回复 2023-09-28
  • 1 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信