这可能是一个微不足道的问题,但我正在努力寻找最有效的方法。
我从servlet给出了一个格式为“20130914”的字符串,我需要从中创建一个javascript日期对象。
据我所知,日期对象接受字符串的ISO格式,因此我需要在我的年,月和日期之间添加破折号,如“2013-09-14”
我可以使用.splice函数在年,月和日期之间插入破折号,但我觉得必须有一个更容易解决这个微不足道的问题。或者我是否想过这个?
答案 0 :(得分:3)
你正在做的很好,编写简单代码来完成常见任务没有什么大问题。
如果您发现自己执行了大量的日期计算,momentjs是一个非常小的(5kb)库,可以像这样处理日期。
例如,您需要的内容可以写成:
moment("20130914", "YYYYMMDD");
答案 1 :(得分:2)
因为我爱上了正则表达式:
var rawDate = '20130914';
console.log(new Date(rawDate.replace(/(\d{4})(\d{2})(\d{2})/,"$1-$2-$3")));
//Output: Sat Sep 14 2013 12:00:00 GMT+1200 (New Zealand Standard Time)
答案 2 :(得分:0)
使用简单明了的JS:
var input = "20130914";
var date = new Date(input.substr(0,4), input.substr(4,2), input.substr(6,2));
答案 3 :(得分:0)
您可以获取部分并将其直接提供给Date构造函数,而不用解析一个字符串以创建另一个要由内置解析器解析的字符串:
let s = '20130914';
// Parse string in YYYYMMDD format to Date object
function parseYMD(s) {
let b = s.match(/\d\d/g);
return new Date(b[0]+b[1], b[2]-1, b[3]);
}
console.log(parseYMD(s).toString());