我有一个字符串可以解析为Date
const a = '18122122'
并且这种方式(经常使用substr)解析它是丑陋且容易出错的
const date = new Date('20' + a.substr(0, 2), a.substr(2, 2) - 1, a.substr(4, 2), a.substr(6,2 ))
我想念像这样的方法吗
const dateArray = a.<method>(2) // return ['18', '12', '21', '22']
dateArray[0] = '20' + dateArray[0]
dateArray[1] -= 1;
const date = new Date(...dateArray)
答案 0 :(得分:3)
您可以使用全局正则表达式来匹配重复的两位数实例,然后根据需要替换数组项:
const a = '18122122';
const dateArray = a.match(/\d{2}/g);
dateArray[0] = '20' + dateArray[0];
dateArray[1] -= 1;
const date = new Date(...dateArray);
console.log(date);
答案 1 :(得分:1)
尝试:
const a = "18042019";
let [, day, month, year] = a.match(/^(\d{2})(\d{2})(\d{4})/);
new Date(year, --month, day);
Date
参数是包含数字的字符串无关紧要,因为构造函数始终会将每个参数类型转换为Number
。