将字符串转换为JS日期

时间:2013-09-26 12:28:46

标签: javascript

我正在尝试将字符串值转换为JavaScript日期格式,但我似乎没有找到一种简单的方法来执行它而不必使用其他库,例如datejs

var dateString = "20131120";
    var date       = new Date(dateString);
console.log(date);
     // I need to add an additional day to the original string
    var newDate    = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + (date.getDate()+1);
console.log(newDate);

非常感谢任何提示。

4 个答案:

答案 0 :(得分:5)

请试试这段代码

 var dateString  = "20131120";
    var year        = dateString.substring(0,4);
    var month       = dateString.substring(4,6);
    var day         = dateString.substring(6,8);
    var date        = new Date(year, month-1, day);

这里只使用了简单的子串方法

First (0,4) will extract the year then next two is for month and next two is for day of month

  NOTE:
    Here we doing  `month-1` because it will count from 0 e.g (january==0).

希望有所帮助

答案 1 :(得分:3)

简单的表达式:

new Date("20131120".replace(/(\d{4})(\d{2})(\d{2})/,"$2/$3/$1"))

这是非常基本的正则表达式。

匹配4个号码,匹配2个号码,匹配2个号码组。

使用组$ 1的替换工作是第一场比赛,$ 2是第二场比赛,$ 3是第三场比赛。了解正则表达式。

答案 2 :(得分:2)

在ES5之前,解析日期字符串完全取决于实现。现在已指定a version of ISO8601,但所有正在使用的浏览器都不支持它。所以最好的方法是手动解析它。

所以在这种情况下我会这样做:

var dateString = "20131120";
var m = dateString.match(/\d\d/g);
var date = new Date(m[0] + m[1], --m[2], m[3]);

可以在任何支持javascript的浏览器中使用。

答案 3 :(得分:-2)

您可以做的最好的事情是使用ISO格式:YYYY-MM-DD或YYYY-MM-DDTHH:MM:SS

例如: 新日期('2011-04-11')

新日期('2011-04-11T11:51:00')

更多信息:MDN | Date

对于旧的Internet Explorer兼容性(小于9的IE版本在Date构造函数中不支持ISO格式),您应该将日期时间字符串表示形式拆分为它的部分,然后您可以使用构造函数使用日期时间部分,例如:new Date('2011 ','04' - 1,'11','11','51','00')

请注意,月份数必须少1个。