Javascript将YYMMDD格式的字符串转换为日期对象

时间:2013-05-23 02:21:14

标签: javascript html

这可能是一个微不足道的问题,但我正在努力寻找最有效的方法。

我从servlet给出了一个格式为“20130914”的字符串,我需要从中创建一个javascript日期对象。

据我所知,日期对象接受字符串的ISO格式,因此我需要在我的年,月和日期之间添加破折号,如“2013-09-14”

我可以使用.splice函数在年,月和日期之间插入破折号,但我觉得必须有一个更容易解决这个微不足道的问题。或者我是否想过这个?

4 个答案:

答案 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());