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

Javascript converting YYMMDD formatted string into date object

本文关键字:日期 对象 转换 字符串 YYMMDD 格式化 Javascript      更新时间:2023-09-26

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

我从servlet中获得了一个格式为"20130914"的字符串,我需要从中创建一个javascript日期对象。

据我所知,date对象接受ISO格式的字符串,所以我需要在我的年,月和日期之间附加破折号,如"2013-09-14"

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

你所做的很好,写简单的代码来完成常见的任务没有什么大问题。

如果你发现自己在执行大量的日期计算,momentjs是一个非常小的(5kb)库,可以处理这样的日期。

例如,你现在需要的东西可以写为:

moment("20130914", "YYYYMMDD");

因为我爱上了正则表达式:

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) 

使用简单的JS:

var input = "20130914";
var date = new Date(input.substr(0, 4), input.substr(4, 2) - 1, input.substr(6, 2));
console.log(date.toString());

与其解析一个字符串来创建另一个由内置解析器解析的字符串,不如获取这些部分并将它们直接提供给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());