0

我正在尝试将字符串值转换为 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

4 回答 4

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).

希望能帮助到你

于 2013-09-26T12:38:22.920 回答
3

简单的正则表达式:

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

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

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

使用组进行替换工作 $1 是第一个匹配项,$2 是第二个匹配项,$3 是第三个匹配项。了解正则表达式。

于 2013-09-26T12:32:46.337 回答
2

在 ES5 之前,日期字符串的解析完全依赖于实现。现在已经指定了 ISO8601 的版本,但并非所有正在使用的浏览器都支持它。所以最好的方法是手动解析它。

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

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

这将在任何支持javascript的浏览器中工作。

于 2013-09-26T12:42:28.520 回答
-2

最好的办法是使用 ISO 格式:YYYY-MM-DD 或 YYYY-MM-DDTHH:MM:SS

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

或者

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

欲了解更多信息:MDN | 日期

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

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

于 2013-09-26T12:40:24.747 回答